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%が過ぎ去りました。
- 作者: 高橋征義,後藤裕蔵,まつもとゆきひろ
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2013/06/04
- メディア: 単行本
- この商品を含むブログ (26件) を見る