为了账号安全,请及时绑定邮箱和手机立即绑定

JSON Stringify由于UTC更改日期时间

JSON Stringify由于UTC更改日期时间

慕标琳琳 2019-12-25 15:39:11
由于我所在的位置,我在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(),但是这些也不能给我我想要的东西。谁能帮我?
查看完整描述

3 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

最近,我遇到了同样的问题。并使用以下代码解决了该问题:


x = new Date();

let hoursDiff = x.getHours() - x.getTimezoneOffset() / 60;

let minutesDiff = (x.getHours() - x.getTimezoneOffset()) % 60;

x.setHours(hoursDiff);

x.setMinutes(minutesDiff);


查看完整回答
反对 回复 2019-12-25
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

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


查看完整回答
反对 回复 2019-12-25
?
梦里花落0921

TA贡献1772条经验 获得超5个赞

这是另一个答案(我个人认为更合适)


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 :)


查看完整回答
反对 回复 2019-12-25
  • 3 回答
  • 0 关注
  • 395 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信