【发布时间】:2011-01-31 21:10:38
【问题描述】:
我需要将 Date 对象转换为 TimeWithZone 对象,该对象表示给定时区中那一天的开始。
以下方法可行,但似乎过于复杂,因为它需要我将日期转换为字符串:
?> date = Date.parse("2010-02-17")
=> Wed, 17 Feb 2010
>> ActiveSupport::TimeZone['Eastern Time (US & Canada)'].parse(date.to_s)
=> Wed, 17 Feb 2010 00:00:00 EST -05:00
>> ActiveSupport::TimeZone['UTC'].parse(date.to_s)
=> Wed, 17 Feb 2010 00:00:00 UTC 00:00
我错过了更好的方法吗?
编辑: 人们建议以下变化:
?> date.to_datetime.in_time_zone('Eastern Time (US & Canada)').beginning_of_day
=> Tue, 16 Feb 2010 00:00:00 EST -05:00
如您所见,这不是等效的转换,因为它是在美国东部标准时间 2 月 16 日开始时离开我的,而不是美国东部标准时间 2 月 17 日开始。
【问题讨论】:
-
看起来您的解决方案可能是正确的方法。
-
我已经编辑了我的回复来解决这个问题。
-
给自己解决方案! =) 时区的时间总是很混乱。
标签: ruby-on-rails ruby activesupport