Ruby Time 在解析时不保留偏移量


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

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

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

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

相关内容

  • 没有找到相关文章

最新更新