Ruby DateTime.Parse到本地时间

时间:2011-05-07 12:51:48

标签: ruby datetime

我有一个日期字符串20101129220021,所以我将使用

require 'date'
d = DateTime.parse('20101129220021')

这部分工作正常,我得到一个日期,即UTC。

我的问题是,如何将其转换为当地时间?我尝试了很多方法,比如使用d.to_time提取时间部分并操纵结果,但它没有用。据我所知,DateTime对象是不可变的。我能帮忙吗?

2 个答案:

答案 0 :(得分:4)

irb(main):001:0> require "date"
=> true
irb(main):002:0> d = DateTime.parse('20101129220021')
=> #<DateTime: 2010-11-29T22:00:21+00:00 (70719276007/28800,0/1,2299161)>
irb(main):003:0> d.to_time
=> 2010-11-30 00:00:21 +0200

ruby​​ 1.9.2p180(2011-02-18)

答案 1 :(得分:3)

您可以根据时区添加合理分数以获取当地时间。

require 'date'

# Make this whatever your zone is. Using UTC +0300 here.
ZONE = 3

d = DateTime.parse('20101129220021') + Rational(ZONE,24)

d.to_s # => "2010-11-30T01:00:21+00:00"