我有这样的代码:
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
?
答案 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(分钟)] 并将其调整为日期的时间戳以获取所需的日期。