Ruby: 時刻フォーマット文字列
REx - Ruby Examination で解いた問題の解説を自分なりにまとめ直すシリーズです。
問題
d = Date.new(2015, 1, 5)
の時、出力結果が01/05/15
になるのはどれ?
選択肢
puts d.strftime("%x")
puts d.strftime("%m/%d/%Y")
puts d.strftime("%m/%D/%y")
puts d.strftime("%M/%d/%y")
解答
正解は [1] です
解説
フォーマット文字列の意味
- 『年・月・日』
%C
: 世紀 (2009年であれば 20)%Y
: 西暦を表す数%y
: 西暦の下2桁(00-99)%B
: 月の名称(January, February ... )%b
: 月の省略名(Jan, Feb ... )%h
: %b と同等%m
: 月を表す数字(01-12)%d
: 日(01-31)%e
: 日。一桁の場合、半角空白で埋める ( 1..31)
- 『曜日・週数・日数』
%A
: 曜日の名称(Sunday, Monday ... )%a
: 曜日の省略名(Sun, Mon ... )%w
: 曜日を表す数。日曜日が0(0-6)%u
: 月曜日を1とした、曜日の数値表現 (1..7)%U
: 週を表す数。最初の日曜日が第1週の始まり(00-53)%W
: 週を表す数。最初の月曜日が第1週の始まり(00-53)%V
: ISO 8601形式の暦週 (01..53)%j
: 年中の通算日(001-366)
- 『時・分・秒』
- 『午前午後』
%P
: 午前または午後(am,pm)%p
: 午前または午後(AM,PM)
- 『合わせ技』
%D
: 日付 (%m/%d/%y)%x
: 同上%F
: %Y-%m-%d と同等 (ISO 8601の日付フォーマット)%v
: VMS形式の日付 (%e-%b-%Y)%c
: 日付と時刻%X
: 時刻%R
: 24時間制の時刻。%H:%M と同等。%T
: 24時間制の時刻。%H:%M:%S と同等。%r
: 12時間制の時刻。%I:%M:%S %p と同等。
- 『タイムゾーン』
- 『その他』
%n
: 改行 (\n)%t
: タブ文字 (\t)%%
: %自身
参考: instance method Time#strftime (Ruby 2.1.0)
実際の出力
require 'date' d = Date.new(2015, 1, 5) puts d.strftime("%x") puts d.strftime("%m/%d/%Y") puts d.strftime("%m/%D/%y") puts d.strftime("%M/%d/%y")
01/05/15 01/05/2015 01/01/05/15/15 00/05/15