Timeオブジェクトを指定したフォーマットで文字列に変換する

現在時刻や時刻を指定して Time クラスのオブジェクトを作成したあとで任意に指定したフォーマットで文字列として取得することができます。ここでは Ruby で Time オブジェクトを指定したフォーマットで文字列に変換する方法について解説します。

(Last modified: )

Timeオブジェクトを指定したフォーマットで文字列に変換する

Time クラスのオブジェクトを指定したフォーマットで文字列として取得する方法です。 Time クラスで用意されている strftime メソッドを使います。

strftime(format)

引数として出力したい形式を表す文字列を指定します。変換された結果を文字列として取得します。フォーマット文字列には普通の文字列の他に以下のような特別な文字列を指定することができます。

フォーマット文字列出力形式
%A曜日の名称(Sunday, Monday ... )
%a曜日の省略名(Sun, Mon ... )
%B月の名称(January, February ... )
%b月の省略名(Jan, Feb ... )
%C世紀 (2009年であれば 20)
%c日付と時刻 (%a %b %e %T %Y)
%D日付 (%m/%d/%y)
%d日(01-31)
%e日。一桁の場合、半角空白で埋める ( 1..31)
%F%Y-%m-%d と同等 (ISO 8601の日付フォーマット)
%GISO 8601の暦週の年
%gISO 8601の暦週の年の下2桁(00-99)
%H24時間制の時(00-23)
%h%b と同等
%I12時間制の時(01-12)
%j年中の通算日(001-366)
%k24時間制の時。一桁の場合、半角空白で埋める ( 0..23)
%Lミリ秒 (000..999)
%l12時間制の時。一桁の場合、半角空白で埋める ( 0..12)
%M分(00-59)
%m月を表す数字(01-12)
%n改行 (\n)
%N秒の小数点以下。桁の指定がない場合は9桁 (ナノ秒)、%6N: マイクロ秒 (6桁)、%3N: ミリ秒 (3桁)
%P午前または午後(am,pm)
%p午前または午後(AM,PM)
%Q1970-01-01 00:00:00 UTC からの経過ミリ秒
%R24時間制の時刻。%H:%M と同等。
%r12時間制の時刻。%I:%M:%S %p と同等。
%S秒(00-60) (60はうるう秒)
%s1970-01-01 00:00:00 UTC からの経過秒
%T24時間制の時刻。%H:%M:%S と同等。
%tタブ文字 (\t)
%U週を表す数。最初の日曜日が第1週の始まり(00-53)
%u月曜日を1とした、曜日の数値表現 (1..7)
%VISO 8601形式の暦週 (01..53)
%vVMS形式の日付 (%e-%^b-%4Y)
%W週を表す数。最初の月曜日が第1週の始まり(00-53)
%w曜日を表す数。日曜日が0(0-6)
%X時刻
%x日付
%Y西暦を表す数
%y西暦の下2桁(00-99)
%Zタイムゾーン
%zタイムゾーン。UTCからのオフセット (例 +0900)
%:zタイムゾーン。コロンが入ったUTCからのオフセット (例 +09:00)
%::zタイムゾーン。コロンが入った秒まで含むUTCからのオフセット (例 +09:00:00)
%%%自身
%+%a %b %e %H:%M:%S %Z %Y

例えば次のように使用します。

t = Time.now
puts(t.strftime("現在時刻 %H時 %M分 %S秒"))
サンプルコード

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

# encoding: UTF-8

t = Time.now
puts(t.strftime("現在時刻 %H時 %M分 %S秒"))
puts(t.strftime("現在日時 %B,%d(%A) %Y %Z"))

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

任意のフォーマットで文字列として取得する

-- --

Ruby で Time オブジェクトを指定したフォーマットで文字列に変換する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。