日付と時刻のオブジェクトを指定したフォーマットで文字列に変換する

DateTime クラスのオブジェクトを作成したあと、指定したフォーマットを使って日付と時刻のオブジェクトを文字列に変換することができます。ここでは Ruby で日付と時刻のオブジェクトを指定したフォーマットで文字列に変換する方法について解説します。

(2021 年 06 月 30 日公開 / 2022 年 10 月 17 日更新)

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

DateTime クラスのオブジェクトに対しても Date クラスで用意されている strftime メソッドを使って指定のフォーマットで文字列に変換することが出来ます。

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

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

フォーマット文字列出力形式
%A曜日の名称(Sunday, Monday ... )
%a曜日の省略名(Sun, Mon ... )
%B月の名称(January, February ... )
%b月の省略名(Jan, Feb ... )
%c日付と時刻
%C世紀番号 [00,99]
%d日(01-31)
%D%m / %d / %y としての日付
%e%dと同じ
%h%bと同じ
%H24時間制の時(00-23)
%I12時間制の時(01-12)
%j年中の通算日(001-366)
%M分(00-59)
%m月を表す数字(01-12)
%n任意の空白
%p午前または午後(AM,PM)
%R%H : %M としての時刻
%S秒(00-60) (60はうるう秒)
%t任意の空白
%T%H : %M : %S としての時刻
%U週を表す数。最初の日曜日が第1週の始まり(00-53)
%W週を表す数。最初の月曜日が第1週の始まり(00-53)
%w曜日を表す数。日曜日が0(0-6)
%Xロケールの日付形式を使用した時刻
%xロケールの日付形式を使用した日付
%Y西暦を表す数
%y西暦の下2桁(00-99)
%Zタイムゾーン
%zタイムゾーン
%%% 自身

Dateクラス のオブジェクトの場合は時刻に関する情報が含まれていませんでしたが、 DateTime クラスのオブジェクトの場合は日付と時刻の情報を持っているので時刻に関する値も表示されます。

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

require "date"

dn = DateTime.now
str = d.strftime("%Y年 %m月 %d日 %H時 %M分 %S秒")

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

サンプルコード

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

# encoding: UTF-8

require "date"

dt = Date.today
puts(dt.strftime("%Y年 %m月 %d日, %H:%M:%S"))

dn = DateTime.now
puts(dn.strftime("%Y年 %m月 %d日, %H:%M:%S"))

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

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

-- --

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

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。