【发布时间】:2017-05-04 22:12:37
【问题描述】:
这是我一直遇到的问题,我不知道如何解决。
用户在创建帐户时设置他们的Time.zone。在本例中为“太平洋时间(美国和加拿大)”。
当他们创建一个对象并输入日期和时间时,它以没有明确时区偏移的字符串格式输入,例如“05/31/2017 2:00 PM”
了解这两件事。我想把输入的时间字符串转换成UTC格式保存。
我尝试了以下方法,但没有考虑太平洋时间:
time = Time.strptime("05/31/2017 2:00 PM Pacific Time (US & Canada)", "%m/%d/%Y %H:%M %p %Z").utc
=> 2017-05-31 14:00:00 UTC
14:00:00 UTC 是太平洋时间上午 7 点。它应该是 21:00:00,因为它目前是 -0800。我想找到一种将时区考虑在内并以 UTC 格式正确保存的方法。
如果我像这样给它精确的偏移量,它会正确转换:
time = Time.strptime("05/31/2017 2:00 PM -0800", "%m/%d/%Y %H:%M %p %Z").utc
=> 2017-05-31 22:00:00 UTC
这个问题要了我的命。我只想以 UTC 格式保存所有日期和时间,这样用户只需设置他们的时区并正确查看时间。如果适用,还要考虑 DST。
【问题讨论】:
标签: ruby-on-rails ruby time ruby-on-rails-5