我需要将Date对象转换为TimeWithZone对象,该对象表示给定时区中当天的开始。将日期对象转换为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日
它看起来像你的解决方案可能是去的正确方法。 – 2010-03-26 00:38:42
我编辑了我的回复以解决此问题。 – 2010-03-26 10:28:47
给自己解决方案! =)时间与时区总是混乱。 – John 2010-11-17 19:31:37