Answers:
该setHours
方法可以采取可选的minutes
,seconds
和ms
参数,例如:
var d = new Date();
d.setHours(0,0,0,0);
这样会将时间设置00:00:00.000
为当前时区,如果您要使用UTC时间,则可以使用该setUTCHours
方法。
只是想说明一下,已接受答案的摘录给出了过去最近的午夜:
var d = new Date();
d.setHours(0,0,0,0); // last midnight
如果要在将来获得最近的午夜,请使用以下代码:
var d = new Date();
d.setHours(24,0,0,0); // next midnight
对象配置的一线式:
new Date(new Date().setHours(0,0,0,0));
创建元素时:
dateFieldConfig = {
name: "mydate",
value: new Date(new Date().setHours(0, 0, 0, 0)),
}
只是将其添加到此处,因为我登陆了此页面,以寻找如何在moment.js中执行此操作,其他人也可能这样做。
[ 理论上:“时刻”一词已经出现在此页面的其他地方,因此搜索引擎将直接指向此处,非常广泛,足以保证在其他与日期有关的SO问题中提到它的频率也得以覆盖。
因此,在2.0.0及更高版本中:
date.startOf('day');
对于早期版本:
date.sod();
文件:
moment(DATE_OBJECT).startOf('day').toDate();
我已经制作了几个原型来为我处理。
// This is a safety check to make sure the prototype is not already defined.
Function.prototype.method = function (name, func) {
if (!this.prototype[name]) {
this.prototype[name] = func;
return this;
}
};
Date.method('endOfDay', function () {
var date = new Date(this);
date.setHours(23, 59, 59, 999);
return date;
});
Date.method('startOfDay', function () {
var date = new Date(this);
date.setHours(0, 0, 0, 0);
return date;
});
如果您不希望安全检查,那么您可以使用
Date.prototype.startOfDay = function(){
/*Method body here*/
};
用法示例:
var date = new Date($.now()); // $.now() requires jQuery
console.log('startOfDay: ' + date.startOfDay());
console.log('endOfDay: ' + date.endOfDay());
如果您已经在项目中将d3.js作为依赖项,或者不介意将其引入,则d3-time(d3.js库从v4.0.0开始是模块化的)具有Intervals。
当将日期设置为“默认”值(例如午夜,0.00秒,每月的第一天等)时,它们可能会有用。
var d = new Date(); // Wed Aug 02 2017 15:01:07 GMT+0200 (CEST)
d3.timeHour(d) // Wed Aug 02 2017 00:00:00 GMT+0200 (CEST)
d3.timeMonth(d) // Tue Aug 01 2017 00:00:00 GMT+0200 (CEST)