【问题标题】:JSON.net deserialize date with javascriptJSON.net 使用 javascript 反序列化日期
【发布时间】:2015-09-25 15:05:45
【问题描述】:

当我使用 Json.Net 序列化日期时,我得到的日期格式为:

'2015-07-07T17:27:00.057'

一旦我从 ajax 收到该对象,它就会作为字符串而不是日期出现。如何将 '2015-07-07T17:27:00.057' 转换为 javascript 日期。

我试过了

 new Date('2015-07-07T17:27:00.057') but that gives the incorrect date

编辑:

发现问题。如果我序列化DateTime.Now,我会得到错误的日期。但是如果我序列化DateTime.UtcNow,我会在反序列化时得到正确的日期。我需要以协调世界时 (UTC) 保存我的日期。 cmets 是解决方案,非常感谢。

【问题讨论】:

  • 通常,当未指定时区时,计算机系统假定为 GMT。例如,当我在浏览器控制台中键入该行时,日期是 2015 年 7 月 7 日 11:27:00。请注意,JSON 时间是 17:27,但我的浏览器将其解释为 11:27,因为我距离 GMT 为 -6。
  • 您在使用例如DateTime.Now 而不是 DateTime.UtcNow?时区很重要,您的序列化值有一个 T in,而不是 Z 表示通用时间。 (en.wikipedia.org/wiki/ISO_8601)
  • 是的,我认为这就是问题所在。我正在使用 dateTime.Now :/

标签: javascript datetime serialization json.net


【解决方案1】:

试试

new Date(JSON.parse(datestr));

【讨论】:

    【解决方案2】:

    问题是您需要在字符串中编码的时区信息。尝试使用DateTimeOffset.Now 作为可移植的时间格式。

    也可以看看:

    【讨论】:

      【解决方案3】:

      Json.Net 支持多种格式化日期的方式,如果您只从 ajax 调用中使用它,您可能需要查看 JavaScriptDateTimeConverter。

      http://www.newtonsoft.com/json/help/html/DatesInJSON.htm

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-26
        • 2015-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-25
        • 1970-01-01
        相关资源
        最近更新 更多