Rubyで日時をYYYYMMDDのように指定のフォーマットで表現する


スポンサーリンク

JavaでいうSimpleDataFormatみたいなことを、Rubyは簡単に実現することができます。

以下の例を見てみましょう。

# encoding: utf-8

now = Time.now
puts now.strftime('%Y/%m/%d %H:%M:%S')  #2014/09/06 16:29:32

#桁数を指定して表示。ここでは8桁指定
puts now.strftime('%008Y') #00002014

#0埋めではなく、空白埋めにする
puts now.strftime('%_8Y') #    2014

#左寄せにする
puts now.strftime('%-m') #9

こんな感じで、Timeオブジェクトのメソッドを使って日時を文字列で出力することができます。

フォーマット 意味
%A 曜日の名前
%a 曜日の略称
%B 月の名前
%b 月の略称
%C 年の上2桁
%c 日付と時刻
%D 日付(%m/%d/%y)
%d
%e
%H 時。24時間表示の0埋め。
%l 時。12時間表示の0埋め。
%j その年の通算日数
%k 時。24時間表示の半角スペース埋め。
%L ミリ秒
%M
%m
%U 週。2桁で0埋め。その年の最初の週を0とする。
%u 曜日。月曜日を1とした、1から7までの数字。
%V 週。二桁で0埋め。
%W 週。二桁で0埋め。
%w 曜日。日曜日を0として0から6までの数値
%Y 年。4桁
%y 年。下二桁
%Z タイムゾーン

色々と使ってみます。

# encoding: utf-8

now = Time.now
puts now.strftime('%Y/%m/%d %H:%M:%S')  #2014/09/06 16:29:32

#桁数を指定して表示。ここでは8桁指定
puts now.strftime('%008Y') #00002014

#0埋めではなく、空白埋めにする
puts now.strftime('%_8Y') #    2014

#左寄せにする
puts now.strftime('%-m') #9


puts now.strftime('%C') #20
puts now.strftime('%c') #Sat Sep  6 16:39:05 2014
puts now.strftime('%D') #09/06/14
puts now.strftime('%d') #06
puts now.strftime('%Y') #2014
puts now.strftime('%y') #14
puts now.strftime('%l') # 5

puts now.strftime('%u') #6
puts now.strftime('%k') #17
puts now.strftime('%j') #249

puts now.strftime('%U') #35

#今日は1年のうち、どれくらい過ぎ去ってしまったのか
nen_week = 54
now_week = now.strftime('%U')
today = now_week.to_f / nen_week.to_f
today = (today * 100).round(2)
puts "今は一年のうち#{today}%が過ぎ去りました。" #今は一年のうち64.81%が過ぎ去りました。

たのしいRuby 第4版

たのしいRuby 第4版