🐟

[Rails]Timeクラス 時刻を任意のフォーマットに変換

2021/10/07に公開

現在時刻などを指定し、Timeクラスのオブジェクトを作成した後で、任意に指定したフォーマットで文字列として取得する方法です。

Timeクラスのstrftimeメソッドとフォーマット文字列を用います。

書き方

変数 = Time.current.strftime(format文字列)

フォーマット文字列

フォーマット文字列 出力形式
%A 曜日の名称(Sunday, Monday ... )
%a 曜日の省略名(Sun, Mon ... )
%B 月の名称(January, February ... )
%b 月の省略名(Jan, Feb ... )
%c 日付と時刻
%d 日(01-31)
%H 24時間制の時(00-23)
%I 12時間制の時(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 タイムゾーン
%% %自身

オプション

オプション 説明
^ 大文字で出力を行なう
# 小文字であれば大文字に、大文字であれば小文字に変更する
- 左寄せにする(0埋めや空白埋めを行わない)
_ 空白埋めにする
0 0埋めにする
数値 表示桁数を指定する

使用例

まずは変換前の現在時刻を取得してみます。

Time.current
Tue, 03 Aug 2021 14:56:52 JST +09:00

次にstrftimeメソッドとフォーマット文字列を用いて変換して取得してみます。

Time.current.strftime('%Y-%m-%d')
"2021-08-03"

8月を左寄せにして0を非表示にした場合。

Time.current.strftime('%-m/%d %H:%M')
"8/03 15:20"

参考

https://docs.ruby-lang.org/ja/latest/method/Time/i/strftime.html

Discussion