🙄
ActiveSupport の Time#to_fs, to_formatted_s で指定できるフォーマット
ActiveSupport では Time#to_fs
が定義されており、以下のように Time
オブジェクトからフォーマットを指定して文字列に変換することができます。
time = Time.parse("2024-10-06 17:59:12.136189821 +0900")
# cfc822 形式で文字列に変換
pp time.to_fs(:rfc822) # => "Sun, 06 Oct 2024 17:59:12 +0900"
# iso8601 形式で文字列に変換
pp time.to_fs(:iso8601) # => "2024-10-06T17:59:12+09:00"
Time#to_fs
に渡せる値
Time#to_fs
に渡せる値は Time::DATE_FORMATS
で定義されています。
参照: https://github.com/rails/rails/blob/v7.2.1/activesupport/lib/active_support/core_ext/time/conversions.rb#L8-#L26
引数 | フォーマット | 値 |
---|---|---|
:db |
%Y-%m-%d %H:%M:%S | 2024-10-06 17:59:12 |
:inspect |
%Y-%m-%d %H:%M:%S.%9N %z | 2024-10-06 17:59:12.136189821 +0900 |
:number |
%Y%m%d%H%M%S | 20241006175912 |
:nsec |
%Y%m%d%H%M%S%9N | 20241006175912136189821 |
:usec |
%Y%m%d%H%M%S%6N | 20241006175912136189 |
:time |
%H:%M | 17:59 |
:short |
%d %b %H:%M | 06 Oct 17:59 |
:long |
%B %d, %Y %H:%M | October 06, 2024 17:59 |
:long_ordinal |
proc | October 6th, 2024 17:59 |
:rfc822 |
proc | Sun, 06 Oct 2024 17:59:12 +0900 |
:iso8601 |
time.iso8601 | 2024-10-06T17:59:12+09:00 |
NOTE: long_ordinal
rfc822
に関しては proc
で動的に値を変換しています
こんな感じで必要に応じてフォーマットを調整することができます。
Discussion