このエントリーをはてなブックマークに追加

2016年12月4日日曜日

はじめの一歩 -Rails 時間・タイムゾーン編-

どうも、はじめです。
本日から「はじめの一歩 -時間・タイムゾーン編」ということで、
何度かに分けてRailsの時間・タイムゾーンについての記事を連載していきます。

今回の内容は「strftime」についてです。

はじめに

strftimeとは、

Rubyの組み込みオブジェクトとして用意されており、
時刻を指定したフォーマットに沿って文字列へ変換してくれるものになります。


time = Time.now # Sun Dec 03 16:06:18 +0900 2016
time.strftime('%Y年%m月%d日 %H:%M:%S')
# => 2016年12月04日 16:06:18

それではフォーマットについて見ていきたいと思います。
今回は例としてTime型での実行結果をまとめてみました。

フォーマット


フォーマット説明実行結果
%Y西暦を表す数 2016
%y西暦の下2桁16
%m月を表す数字(01-12)12
%B月の名称(January,February,March,April,May,June,July,August,September,October,November,December)December
%b月の省略名(Jan,Feb,Mar,Aprl,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)Dec
%d日(01-31)04
%x日付 ('%m/%d/%y')と同じ意味になります12/04/16
%j年中の通算日(001-366)339
曜日
%A曜日の名称(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday)Sunday
%a曜日の略称(Sun,Mon,Tue,Wed,Thu,Fri,Sat)Sun
%w曜日を表す数。日曜日が0(0-6)0
%U週を表す数。最初の日曜日が第1週の始まり(00-53)49
%W週を表す数。最初の月曜日が第1週の始まり(00-53)48
%H24時間制の時(00-23)16
%I12時間制の時(01-12)04
%M分(00-59)06
%S週秒(00-60)(60はうるう秒)18
その他
%c日付と時間"Sun Dec 4 16:06:18 2016"
%p午前または午後(AM,PM)PM
%X時刻"16:06:18"
%ZタイムゾーンJST
%%パーセント%

下記はオプション一覧です。


オプション
フォーマット説明
^大文字で出力
#小文字は大文字に、大文字は小文字に変換
-左寄せ
_空白埋め
00埋め
数値指定した表示桁数での表示

オプションを幾つか組み合わせて実行した結果がこちらになります。
桁数指定をしている状態で左寄せを行うと通常と同じ表示になるようです。

time.strftime('%^10A') # => "    SUNDAY"
time.strftime('%0#6Z') # => "000jst"
time.strftime('%Y/%-m/%-d %X') # => "2017/1/4 16:06:18"
ちなみに、、、
曜日を日本語で表示したいときは以下のように書きます。
Time.now.strftime("#{%w(日 月 火 水 木 金 土)[Time.now.wday]}")
# => 日

まとめ


年月日、曜日、週に関してはTime型、Date型、DateTime型、TimeWithZone型のどれであっても
表示される内容は同じでした。
ですが、時刻やその他のフォーマットに関してはデータ型によって出力内容が異なってきます。
実際に使用する際には、一度想定通りに表示されているかを確認してから使用する用にしましょう。
(今回の時刻、その他の項目に表示されている実行結果はTimeWithZone型となっております。)

次回


今回の最後に出てきましたデータ型について、
時刻だけでも幾つかのデータ型がありますのでそちらをやってみようと思います。

0 件のコメント:

コメントを投稿