libro
www.tuyano.com
初心者のためのRubyプログラミング入門

日時とTimeクラス (4/4)

作成:2012-09-01 12:57
更新:2012-09-01 12:57

■日時をフォーマットする

Timeの値は、そのままputsで出力したり、to_sでテキストを取り出すなりすればその日時をテキストとして扱えます。が、これだけでは表示の形式などから使えないことも多いでしょう。なにより表示が日本語の一般的なスタイルでないのが問題です。

先に述べたTimeのメソッドを呼び出して個々の値を取り出し表示を作ってもいいのですが、毎度毎度そんなことをやるのは面倒です。日時をテキストとして得たい場合は、日時をフォーマットするメソッドを利用するのがよいでしょう。

strftime」というメソッドは、以下のようにしてフォーマットされた日時のテキストを取得します。
変数 = 《Time》.strftime( フォーマット )
引数にはフォーマットの指定を用意します。これは、あらかじめ用意されている特殊な記号を使って記述されたテキストです。フォーマット用の記号には以下のようなものがあります。

●日時フォイーマットで用いる記号
%A――曜日の名称(Sunday, Monday ... )
%a ――曜日の省略名(Sun, Mon ... )
%B ――月の名称(January, February ... )
%b ――月の省略名(Jan, Feb ... )
%C ――世紀 (2009年であれば 20)
%c ――日付と時刻
%D ――日付 (%m/%d/%y)
%d ――日(01-31)
%e ――日。一桁の場合、半角空白で埋める ( 1..31)
%F ――%Y-%m-%d と同等 (ISO 8601の日付フォーマット)
%H ――24時間制の時(00-23)
%h ――%b と同等
%I ――12時間制の時(01-12)
%j ――年中の通算日(001-366)
%k ――24時間制の時。一桁の場合、半角空白で埋める ( 0..23)
%L ――ミリ秒 (000.999)
%l ――時(0~12の値。常に2桁表記)
%M ――分
%m ――月(整数による表記)
%n ――改行コード
%N ――秒の小数点以下の値
%P ――午前・午後の指定(am/pm)
%p ――午前・午後の指定(AM/PM)
%R ――時刻(%H:%Mと同じ。24時間表記)
%r ――時刻(%I:%M:%S %p と同じ。12時間表記)
%S ――秒
%s ――1970年元旦午前0時からの経過秒
%T ――時刻(%H:%M:%S と同じ。24時間表記)
%t ――タブ文字
%U ――1年の何週目かを示す値(日曜始まり)
%u ――曜日(月曜を1とする、1~7の値)
%v ――VMS形式の日付(%e-%b-%Yと同じ)
%V ――ISO 8601形式
%W ――1年の何週目かを示す値(月曜始まり)
%w ――曜日(日曜をゼロとする、0~1の値)
%X ――時刻
%x ――日付
%Y ――西暦を表す数
%y ――西暦の下2桁(00-99)
%Z ――タイムゾーン
%z ――タイムゾーン(UTCからのオフセット表記)
%:z ――タイムゾーン(UTCからのコロン入オフセット表記)
%::z――タイムゾーン(UTCからのオフセット)
%% ――%の記述

これらの記号を組み合わせることで、独自にフォーマットされたテキストを得ることができます。

下に簡単な利用例を挙げておきました。ここでは、"%y年の%m月は%d日ごろ。%H時と%M分です。"というようにフォーマットのテキストを用意しています。表示させたい日時のテキストを考え、そこに上の記号を必要に応じて埋め込んでいくようにすると、フォーマットのテキストは簡単に作れますよ。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

d1 = Time.now
re = d1.strftime("%y年の%m月は%d日ごろ。%H時と%M分です。")
puts(re)

※関連コンテンツ

「初心者のためのRubyプログラミング入門」に戻る