将JavaScript日期初始化为午夜的最佳方法是什么?

JavaScript

阿飞JinJin

2020-03-16

获取新Date()实例但将时间设置为午夜的最简单方法是什么?

第1779篇《将JavaScript日期初始化为午夜的最佳方法是什么?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

7个回答
飞羽 2020.03.16

如果您已经在项目中将d3.js作为依赖项,或者不介意将其引入,则d3-timed3.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)
乐米亚 2020.03.16

如果计算日期,夏季通常会比午夜(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
    }
樱Tony 2020.03.16

您可能可以使用

new Date().setUTCHours(0,0,0,0)

如果您只需要一次该值。

猪猪Harry泡芙 2020.03.16

setHours方法可以采取可选的minutessecondsms参数,例如:

var d = new Date();
d.setHours(0,0,0,0);

这样会将时间设置00:00:00.000当前时区,如果您想使用UTC时间,则可以使用该setUTCHours方法。

GOTom 2020.03.16

为@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的过期时间。

凯梅小胖 2020.03.16

对象配置的一线式:

new Date(new Date().setHours(0,0,0,0));

创建元素时:

dateFieldConfig = {
      name: "mydate",
      value: new Date(new Date().setHours(0, 0, 0, 0)),
}
A小卤蛋 2020.03.16

只是想说明一下,已接受答案的摘录给出了过去最近的午夜

var d = new Date();
d.setHours(0,0,0,0); // last midnight

如果要在将来获得最近的午夜,请使用以下代码:

var d = new Date();
d.setHours(24,0,0,0); // next midnight

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android