0
puts "date --- #{date}"
@date = Time.parse(date.to_s).iso8601 unless date.nil?
puts "@date -- #{@date}"

输出

Date --- 2012-08-12T12:15:17-07:00
@Date -- 2012-08-12T19:15:17+00:00

有谁知道为什么?

此外,这发生在 strptime

Time.strptime("2012-08-12T12:05:08-07:00", "%Y-%m-%dT%H:%M:%S%:z")
=> 2012-08-12 19:05:08 +0000
4

1 回答 1

1

您的系统似乎设置为 UTC。 Time.parse()创建一个新的 Time 对象,该对象使用系统时区,并将其设置为解析的时间。它不会更改新时间的时区以匹配解析日期的时区。如果你真的想要这种行为,你可以使用类似的东西:

DateTime.parse(date.to_s).new_offset(date.iso8601[-6,6]).iso8601

更新:关于strptime()刚刚添加的问题部分,这是完全相同的概念。正在使用默认时区创建一个新时间,其时间与您正在解析的日期相匹配。

于 2012-08-12T19:57:34.297 回答