我想使用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
答案 0 :(得分:0)
我认为没有问题,正如您在下面的代码中看到的那样。也许你在中间做错了什么。
或者您对UTC格式感到困惑,请尝试阅读此http://php.net/manual/en/mysqli-result.fetch-row.php
var d = new Date();
console.log('d:', d)
var setToZeroTime = new Date(d.setHours(0,0,0,0))
console.log('new date: ',setToZeroTime)
答案 1 :(得分:0)
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())
答案 2 :(得分:0)
您的代码没有问题。你正在检查的是日期的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"
如果您使用getDate方法,您将在设置小时数之前和之后获得18。 所以代码没有错。
答案 3 :(得分:0)
setHours()方法根据本地时间设置指定日期的小时数,并返回自1970年1月1日00:00:00 UTC以来直到更新的Date实例所代表的时间的毫秒数。
要将时间设置为世界时的午夜,请使用setUTCHours()
。
getUTCHours()方法根据通用时间返回指定日期的小时数。
var date = new Date();
console.log(date.toISOString());
date.setUTCHours(0,0,0,0);
console.log(date.toISOString());

答案 4 :(得分:0)
我用时刻解决了这个问题。
矩()STARTOF( '日');