【问题标题】:Why is this iso8601 date parsing with an offset of +2?为什么这个 iso8601 日期解析的偏移量为 +2?
【发布时间】:2013-08-26 17:28:48
【问题描述】:

我有以下 JSON:

{"dtime" : "2020-08-26T15:30:00+03:00"}

解析它,产生以下日期:

=> 2020-08-26 14:30:00 +0200

为什么它有一个 +2 的偏移量而不是一个 +3 的偏移量?

编辑:我正在使用带有 ActiveSupport 3.2.13 的 Rails 3.2.13。我正在尝试使用以下方法解析字符串:

Time.parse(string)

但是,我注意到,如果我用以下方式解析它:

DateTime.parse(string)

我得到了正确的偏移量。

【问题讨论】:

  • 你的时区是什么?
  • 欧洲/布加勒斯特,+03:00
  • 服务器或浏览器或您用来进行解析的任何东西?看起来它的输出格式设置为不同的时区。
  • 请显示您正在使用的任何代码解析它,并指出什么语言或平台。谢谢。
  • 马特,我已经更新了问题。

标签: ruby-on-rails timezone activesupport iso8601 datetimeoffset


【解决方案1】:

我没有资格回答这个问题,因为我不使用 Ruby。也就是说,仅查看标准库,似乎原因是Time.parse 包含calllocaltime,它将解析结果转换为您的本地时区。

我怀疑您实际上是在 GMT +02 执行此代码。您可以通过Time.new 查询。我在 GMT -07 运行。

>> Time.new
=> 2014-05-16 18:51:00 -0700

您可以将结果转换为任何时区,方法是将其传递给localtime

>> require 'Time'
=> true
>> t = Time.parse("2020-08-26T15:30:00+03:00")
=> 2020-08-26 05:30:00 -0700
>> t.localtime("+03:00")
=> 2020-08-26 15:30:00 +0300

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 2016-10-29
    • 1970-01-01
    相关资源
    最近更新 更多