JavaScript日期发布到JSON()

时间:2019-04-25 05:30:30

标签: javascript

我有这样的代码:

var test = new Date(2019, 03, 15, 13, 15, 0);

 console.log(test); //outputs Mon Apr 15 2019 13:15:00 GMT+0530 (India Standard Time)

 console.log(test.toJSON()); //outputs wrong time 2019-04-15T07:45:00.000Z

如何解决toJSON()使其不改变我的时间,而输出2019-04-15T13:15:00.000Z

2 个答案:

答案 0 :(得分:4)

如上所述,toJSON以UTC返回时间,而new Date则使用本地时区。

如果您要使用UTC(即UTC 13:15)创建日期对象,请使用Date.UTC

var test = new Date(Date.UTC(2019, 03, 15, 13, 15, 0));
console.log(test.toJSON());

处理时间和时区可能很棘手,这就是为什么通常所有时间戳都应存储为UTC并在必要时转换为本地时区(或其他时区)的原因。

答案 1 :(得分:2)

date.toJSON()将UTC日期打印为格式化为json-date的字符串。 并且您正在使用IST(GMT + 530)进行打印 您可以使用getTimezoneOffset()偏移时区

var date = new Date(2019, 03, 15, 13, 15, 0);
console.log(date.toString())

// offsetting the time zone

console.log( new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toJSON());

  

Edit -getTimezoneOffset()返回以分钟为单位的偏移量。你必须   将此值转换为秒[60,000(分钟)]   并将其调整为日期的时间戳以获取所需的日期。

相关问题