我想使用JavaScript的setHours()方法将时间设置为0,但它会使日期减少一天。以下是示例代码:
var d = new Date(); //2017-09-18T04:58:34.223Z
d.setHours(0,0,0,0); //2017-09-17T18:30:00.000Z
我想使用JavaScript的setHours()方法将时间设置为0,但它会使日期减少一天。以下是示例代码:
var d = new Date(); //2017-09-18T04:58:34.223Z
d.setHours(0,0,0,0); //2017-09-17T18:30:00.000Z
setHours() 方法根据本地时间设置指定日期的小时,并返回更新后的 Date 实例所表示的时间距 1970 年 1 月 1 日 00:00:00 UTC 的毫秒数。
要将时间设置为协调世界时中的午夜,请使用 setUTCHours()
。
getUTCHours() 方法根据协调世界时返回指定日期的小时。
var date = new Date();
console.log(date.toISOString());
date.setUTCHours(0,0,0,0);
console.log(date.toISOString());
你的代码没有问题。你正在检查的是日期的JSON格式。
var d = new Date();
d.toString();
//"Mon Sep 18 2017 10:47:15 GMT+0530 (India Standard Time)"
d.toJSON();
//"2017-09-18T05:17:15.839Z"
d.setHours(0,0,0,0);
d.toString();
//"Mon Sep 18 2017 00:00:00 GMT+0530 (India Standard Time)"
d.toJSON();
//"2017-09-17T18:30:00.000Z"
d.toLocaleString()
给出本地日期时间
var d = new Date();
d.setHours(0,0,0,0);
console.log('date', d)
console.log('local date', d.toLocaleString())
console.log(d.toGMTString())
console.log(d.toISOString())
我认为没有问题,你可以看到我的代码如下。也许是在中间做错了什么。
或者你对UTC格式感到困惑,那么可以尝试阅读这个https://www.w3.org/TR/NOTE-datetime
var d = new Date();
console.log('d:', d)
var setToZeroTime = new Date(d.setHours(0,0,0,0))
console.log('new date: ',setToZeroTime)
我使用 moment 解决了这个问题。
moment().startOf('day');