我不是指
myDateTime = DateTime.now
myDateTime.new_offset(Rational(0, 24))
或者
Time.now.utc
我所拥有的是美国东部时间的文本日期。
我可以将文本日期转换为DateTime。我们称它为
eastern_date_time
。现在,我们有一个包含DateTime的变量,但是除了我们之外,没人知道它是东部的。自己进行转换将是相当繁重的。如果以夏令时(DST)表示的日期(今年3月8日至11月1日),则我们必须在Eastern_date_time var中增加4小时才能获得UTC,如果该日期以标准时间(ST)表示,必须将5小时添加到我们的Eastern_date_time变量中。
我们如何指定我们拥有的是东部日期时间,然后将其转换为UTC ...可以确定日期是否在DST/ST中并正确应用4或5个小时的东西?
我想将任何类型的日期转换为UTC,以存储在数据库中。
编辑:
使用`in_time_zone',我无法将我的东部时间转换为UTC。我怎样才能实现这个目标?例如...
text_time = "Nov 27, 2015 4:30 PM" #given as Eastern
myEasternDateTime = DateTime.parse text_time # => Fri, 27 Nov 2015 16:30:00 +0000
#now we need to specify that this myEasternDateTime is in fact eastern. However, it's our default UTC. If we use in_time_zone, it just converts the date at UTC to Eastern
myEasternDateTime.in_time_zone('Eastern Time (US & Canada)') # => Fri, 27 Nov 2015 11:30:00 EST -05:00
myEasternDateTime.utc # => Fri, 27 Nov 2015 16:30:00 +0000
那不是我们想要的。我们必须指定myEasterDateTime实际上是东部...,以便当我们在16:30:00上执行
myEasterDateTime.utc
时,最终得到20:30:00。我该怎么做?
最佳答案
有一个 time_in_zone
method in the DateTime class:
now.time_in_zone('UTC')
此后一直是renamed to
in_time_zone
:DateTime.now.in_time_zone('US/Pacific')
=> Wed, 22 Apr 2015 12:36:33 PDT -07:00