chr*_*s P 5 ruby datetime ruby-on-rails utc
我不是指
myDateTime = DateTime.now
myDateTime.new_offset(Rational(0, 24))
Run Code Online (Sandbox Code Playgroud)
要么
Time.now.utc
Run Code Online (Sandbox Code Playgroud)
我所拥有的是东部时间的文本日期.
我可以将该文本日期转换为DateTime.我们称之为eastern_date_time.
现在,我们有一个包含DateTime的变量,但除了我们之外什么都不知道它是东方的.自己转换它将是非常繁重的.如果夏令时(DST)(今年3月8日至11月1日)的日期,我们必须在我们的east_date_time var中添加4小时才能获得UTC,如果日期是标准时间(ST),我们将必须在我们的east_date_time变量中添加5个小时.
我们如何指定我们拥有的是东日期时间,然后将其转换为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
Run Code Online (Sandbox Code Playgroud)
那不是我们想要的.我们必须指定myEasterDateTime实际上是东部...所以当我们myEasterDateTime.utc在16:30:00进行时我们最终得到20:30:00.
我怎么能做到这一点?
我在时区建议的帮助下得到了这样的结果。
time_text_1 = "Apr 20, 2015 4:30PM" #Scraped as an Eastern Time, with no offset of -5:00 from UTC included
time_text_2 = "Nov 20, 2015 4:30PM" #Scraped as an Eastern Time, with no offset of -5:00 from UTC included
Time.zone = 'Eastern Time (US & Canada)'
my_time_1 = Time.zone.parse time_text_1 # Output: Mon, 20 Apr 2015 16:30:00 EDT -04:00
my_time_2 = Time.zone.parse time_text_2 # Output: Fri, 20 Nov 2015 16:30:00 EST -05:00
my_time_1.utc # Output: 2015-04-20 20:30:00 UTC
my_time_2.utc # Output: 2015-11-20 21:30:00 UTC
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1645 次 |
| 最近记录: |