js无法将时区偏移添加到1900-01-01T00:00:00'?

时间:2017-06-05 02:19:32

标签: javascript google-chrome date asp.net-web-api2

我尝试new Date()获取UTC当地时间,

但现在js无法添加时区偏移量(例如,为中国增加8小时)。

在它正常工作之前。

enter image description here

在博客On the nightmare that is JSON Dates. Plus, JSON.NET and ASP.NET Web API

使用ISO 8601日期格式的WebAPI json结果是 '2017-05-10T07:50:16'. enter image description here

2 个答案:

答案 0 :(得分:0)

您需要在字符串中包含时区信息。

对于UTC,可以用Z表示。

new Date("2017-05-10T07:50:16Z").toUTCString()
// Wed, 10 May 2017 07:50:16 GMT

行为的改变反映了标准的变化。

  • 2011, 5th edition(您熟悉并期待的行为)

      

    缺席时区偏移的值为“Z”。

  • 2015, 6th edition

      

    如果没有时区偏移,则将日期时间解释为当地时间。

  • 2016, 7th edition(当前行为)

      

    如果没有时区偏移,则仅日期表单将被解释为UTC时间,日期时间表单将被解释为本地时间

答案 1 :(得分:0)

更改默认DatetimeConverter

 IsoDateTimeConverter converter = new IsoDateTimeConverter
        {
            DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"
        };

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(converter);

How to get JSON.NET to serialize date/time to ISO 8601?