【问题标题】:JSON.stringify(objExtraParam) giving wrong dateJSON.stringify(objExtraParam) 给出错误的日期
【发布时间】:2014-09-25 13:33:15
【问题描述】:

我有一个 javascript 对象,如下所示。

var obj = { pageSize:"25",asOfDate:"Thu Sep 25 00:00:00 UTC+0530 2014"};

当我把它串起来时,

var d = JSON.stringify(obj);

它给了我结果

{"pageSize":"25","asOfDate":"2014-09-24T18:30:00Z"}

它的给出日期2014-09-242014-09-25 可能是什么原因?

编辑:

我的部署服务器位于美国(东部时间 UTC -5:00)。当我从我在印度的本地计算机上检查该站点时,它给我的日期为 24 Sept 2014

【问题讨论】:

  • asOfDate 是一个 Date 对象吗?还是字符串?
  • 肯定是日期,可能是UTC转换造成的
  • JSON.stringify 是否自动将日期转换为 UTC?
  • 在它上面使用toString(在保存之前)它会起作用。

标签: javascript json


【解决方案1】:

UTC+0530 声明一个 UTC 时间偏移。似乎5:30India or Sri Lanka area 附近。

"2014-09-24T18:30:00Z""Thu Sep 25 00:00:00 UTC+0530 2014" 相同,有两种不同的格式。第一种格式的Z 解析为UTC (GMT) 时间,在本例中为-5:30。所以18:3024:00 - 5:30

因此,如果您在 stringify-ing 处于负偏移的时区(例如在 United States UTC−08:00 中),那么它可能会在解析时将日期推迟一天。

我想这就是你所看到的。

相关SO问题:JSON Stringify changes time of date because of UTC

【讨论】:

  • 但我在时区stringify-ing 5:30 仍然将它的归还日期提前一天
  • "2014-09-24T18:30:00Z"Thu Sep 25 00:00:00 UTC+0530 2014 相同。 Z 表示它是 UTC (GMT) 时间。
  • 查看我提到的另一个 SO 问题:stackoverflow.com/questions/1486476/…
  • 服务器总是可以通过UTC。但是,这可能不是一个选择。或者从服务器传递一个字符串,然后自己处理解析。
【解决方案2】:

试试这个

    var obj = { pageSize:"25",asOfDate:"Thu Sep 25 00:00:00 UTC+0530 2014"};
    obj.asOfDate = reverseUTC(obj.asOfDate);
    var d = JSON.stringify(obj);

    function reverseUTC(updatedDate) {
       if ($.isEmptyObject(updatedDate)) {
          var offset = updatedDate.getTimezoneOffset();

           var currentDateTime = new Date();
           updatedDate.setHours((currentDateTime.getHours() * 60 + currentDateTime.getMinutes() - offset) / 60);
           updatedDate.setMinutes((currentDateTime.getHours() * 60 + currentDateTime.getMinutes() - offset) % 60);
    return updatedDate;
        }
    }

【讨论】:

    【解决方案3】:

    在 JSON 中传递日期没有标准格式,因此 JSON.stringify 只是调用默认的 date.prototype.toString() 方法,并且将时区考虑在内。

    您需要确保将日期转换为符合您特定要求的字符串,并且只转换为 JSON 格式。

    【讨论】:

      猜你喜欢
      • 2019-05-12
      • 2017-03-25
      • 1970-01-01
      • 2020-01-22
      • 2011-07-15
      • 2013-07-25
      • 2018-10-13
      • 2013-06-10
      • 1970-01-01
      相关资源
      最近更新 更多