获取新Date()实例但将时间设置为午夜的最简单方法是什么?
将JavaScript日期初始化为午夜的最佳方法是什么?
如果计算日期,夏季通常会比午夜(CEST)多造成1欧元或少1小时。日期返回时,这会导致1天的差异。因此,日期必须四舍五入到最近的午夜。因此,代码将是(thamisOn):
var d = new Date();
if(d.getHours() < 12) {
d.setHours(0,0,0,0); // previous midnight day
} else {
d.setHours(24,0,0,0); // next midnight day
}
您可能可以使用
new Date().setUTCHours(0,0,0,0)
如果您只需要一次该值。
该setHours
方法可以采取可选的minutes
,seconds
和ms
参数,例如:
var d = new Date();
d.setHours(0,0,0,0);
这样会将时间设置00:00:00.000
为当前时区,如果您想使用UTC时间,则可以使用该setUTCHours
方法。
为@Dan的示例添加有用性,我需要查找下一个午夜或午夜。
var d = new Date();
if(d.getHours() < 12) {
d.setHours(12,0,0,0); // next midnight/midday is midday
} else {
d.setHours(24,0,0,0); // next midnight/midday is midnight
}
这使我可以为某个事件设置频率上限,只允许该站点的任何访问者在早上一次和下午一次发生。捕获的日期用于设置cookie的过期时间。
对象配置的一线式:
new Date(new Date().setHours(0,0,0,0));
创建元素时:
dateFieldConfig = {
name: "mydate",
value: new Date(new Date().setHours(0, 0, 0, 0)),
}
只是想说明一下,已接受答案的摘录给出了过去最近的午夜:
var d = new Date();
d.setHours(0,0,0,0); // last midnight
如果要在将来获得最近的午夜,请使用以下代码:
var d = new Date();
d.setHours(24,0,0,0); // next midnight
如果您已经在项目中将d3.js作为依赖项,或者不介意将其引入,则d3-time(d3.js库从v4.0.0开始是模块化的)具有Intervals。
当将日期设置为“默认”值(例如午夜,0.00秒,每月的第一天等)时,它们可能会有用。