本日から「はじめの一歩 -時間・タイムゾーン編」ということで、
何度かに分けて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 |
時 | ||
%H | 24時間制の時(00-23) | 16 |
%I | 12時間制の時(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 |
%% | パーセント | % |
下記はオプション一覧です。
オプション | |
---|---|
フォーマット | 説明 |
^ | 大文字で出力 |
# | 小文字は大文字に、大文字は小文字に変換 |
- | 左寄せ |
_ | 空白埋め |
0 | 0埋め |
数値 | 指定した表示桁数での表示 |
オプションを幾つか組み合わせて実行した結果がこちらになります。
桁数指定をしている状態で左寄せを行うと通常と同じ表示になるようです。
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型となっております。)
表示される内容は同じでした。
ですが、時刻やその他のフォーマットに関してはデータ型によって出力内容が異なってきます。
実際に使用する際には、一度想定通りに表示されているかを確認してから使用する用にしましょう。
(今回の時刻、その他の項目に表示されている実行結果はTimeWithZone型となっております。)
次回
今回の最後に出てきましたデータ型について、
時刻だけでも幾つかのデータ型がありますのでそちらをやってみようと思います。
0 件のコメント:
コメントを投稿