小编ava*_*tok的帖子

将Date对象转换为TimeWithZone

我需要将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
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法让我失踪?

编辑:人们建议的变体:

?> date.to_datetime.in_time_zone('Eastern Time (US & Canada)').beginning_of_day
=> Tue, 16 Feb 2010 00:00:00 EST -05:00
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,这不是一个等价的转换,因为它在美国东部时间2月16日开始,而不是美国东部时间2月17日开始.

ruby ruby-on-rails activesupport

6
推荐指数
3
解决办法
1万
查看次数

标签 统计

activesupport ×1

ruby ×1

ruby-on-rails ×1