Techioz Blog

タイムゾーンのないタイムスタンプ文字列を既知のタイムゾーンの Time オブジェクトに変換します

概要

英国の現地時間 (時期に応じて GMT または BST) であることがわかっているタイムスタンプ文字列 (例: “23/06/2021 13:46”) がいくつかありますが、タイムゾーンの表示がありません。弦。

レール内で、レールを正しいタイムゾーンの Time オブジェクトに変換する賢明な方法は何ですか?

非常に回りくどい方法でそれを行うことができます。

time_string = "23/06/2021 13:46"
base_time = Time.parse(time_string)

Time.use_zone("Europe/London") do
  Time.zone.now.change(year: base_time.year, month: base_time.month, day: base_time.day, hour: base_time.hour, min: base_time.min, sec: base_time.sec)
end

=> Wed, 23 Jun 2021 13:46:00 BST +01:00

しかし、もっと良い方法があるはずです!

さまざまなソースを読みましたが、どれも既存の時刻オブジェクトを別のタイムゾーンに変換する方法、または Time オブジェクトを文字列にキャストする方法に関するもののようです。

ありがとう!

解決策

in_time_zone メソッドを使用して、タイムスタンプをサーバーのタイムゾーンに変換できます。

time_string = "23/06/2021 13:46"
base_time = Time.parse(time_string)
new_time = base_time.in_time_zone