指定フォーマットで文字列に変換する

広告

Dateクラスのオブジェクトを作成した後で任意に指定したフォーマットで文字列として取得する方法を確認します。Dateクラスで用意されている「strftime」メソッドを使います。

Dateオブジェクト.strftime([format])

引数として出力したい形式を表す文字列を指定します。フォーマット文字列には普通の文字列の他に以下のような特別な文字列を指定することが出来ます。

フォーマット文字列出力形式
%A曜日の名称(Sunday, Monday ... )
%a曜日の省略名(Sun, Mon ... )
%B月の名称(January, February ... )
%b月の省略名(Jan, Feb ... )
%c日付と時刻
%d日(01-31)
%H24時間制の時(00-23)
%I12時間制の時(01-12)
%j年中の通算日(001-366)
%M分(00-59)
%m月を表す数字(01-12)
%p午前または午後(AM,PM)
%S秒(00-60) (60はうるう秒)
%U週を表す数。最初の日曜日が第1週の始まり(00-53)
%W週を表す数。最初の月曜日が第1週の始まり(00-53)
%w曜日を表す数。日曜日が0(0-6)
%X時刻
%x日付
%Y西暦を表す数
%y西暦の下2桁(00-99)
%Zタイムゾーン
%%%自身

時刻に関するフォーマットを指定することも出来るのですが、Dateクラスのオブジェクトは時刻に関する情報は保持していないので全て0で表示されます。

実際の使い方は次のようになります。

require "date"

d = Date.today
str = d.strftime("%Y年 %m月 %d日")

上記の場合は現在日時を「xxxx年 xx月 xx日」と言うフォーマットで文字列として取得出来ます。

サンプルプログラム

では簡単なサンプルで試してみます。

LibraryDate5.rb

#! ruby -Ks

require "date"

d = Date.today

print(d.strftime("%Y年 %m月 %d日"), "¥n")
print(d.strftime("%Y年 %m月 %d日, %H:%M:%S"), "¥n")

実行結果は次のようになります。

任意のフォーマットで文字列に変換する

( Written by Tatsuo Ikura )