JSON Stringify由于UTC更改日期时间

由于我所在的位置,我在JavaScript中的日期对象始终以UTC +2表示。因此像这样


Mon Sep 28 10:00:00 UTC+0200 2009

问题是JSON.stringify将上述日期转换为


2009-09-28T08:00:00Z  (notice 2 hours missing i.e. 8 instead of 10)

我需要的是兑现日期和时间,但是没有兑现,因此应该


2009-09-28T10:00:00Z  (this is how it should be)

基本上我用这个:


var jsonData = JSON.stringify(jsonObject);

我尝试传递替换参数(stringify上的第二个参数),但问题是该值已被处理。


我也尝试在date对象上使用toString()and toUTCString(),但是这些也不能给我我想要的东西。


谁能帮我?


慕标琳琳
浏览 399回答 3
3回答

慕森王

最近,我遇到了同样的问题。并使用以下代码解决了该问题:x = new Date();let hoursDiff = x.getHours() - x.getTimezoneOffset() / 60;let minutesDiff = (x.getHours() - x.getTimezoneOffset()) % 60;x.setHours(hoursDiff);x.setMinutes(minutesDiff);

眼眸繁星

JSON使用的Date.prototype.toISOString功能不代表本地时间-它代表未经修改的UTC时间-如果查看日期输出,您会看到自己处于UTC + 2小时,这就是JSON字符串更改两个小时的原因,但是如果这样允许在多个时区正确显示同一时间。

梦里花落0921

这是另一个答案(我个人认为更合适)var currentDate = new Date(); currentDate = JSON.stringify(currentDate);// Now currentDate is in a different format... oh gosh what do we do...currentDate = new Date(JSON.parse(currentDate));// Now currentDate is back to its original form :)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript