Dateオブジェクトにタイムゾーンを付与する
in_time_zone メソッドを使う
Date.new(2022, 7, 1).in_time_zone
=> Fri, 01 Jul 2022 00:00:00.000000000 JST +09:00
in_time_zone はActive Supportに定義されているメソッド
https://github.com/rails/rails/blob/main/activesupport/lib/active_support/core_ext/date_and_time/zones.rb
日付変換には to_time というメソッドもあるが、こちらは環境のタイムゾーンに準拠している
通常はRailsのタイムゾーンに準拠している in_time_zone を使う
YAMLの日付を表す文字列を読み込んだときの動き
config gemsのSettings.ymlに定義した値を読み出すときにおやっとなった挙動があったのでメモ
cf. https://twitter.com/sanfrecce_osaka/status/1540318072770539520
YAML.safe_load("foo: 2022-01-01")
# => Tried to load unspecified class: Date (Psych::DisallowedClass)
文字列で定義したと思っていた日付がDateクラスとして扱われています
以下のように日付の部分をクォートで囲うと期待どおりの日付の文字列を得ることができます
YAML.safe_load("foo: '2022-01-01'")
# => {"foo"=>"2022-01-01"}