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

2020/09/27 02:01 · javascript ·  · 0评论

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

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

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中执行此操作,其他人也可能这样做。

[ 理论上:“时刻”一词已经出现在此页面的其他位置,因此搜索引擎将其引向此处,moment.js的使用范围非常广泛,可以保证在其他与日期有关的SO问题中提到它的频率也在不断提高。

因此,在2.0.0及更高版本中:

date.startOf('day');

对于早期版本:

date.sod();

文件:

http://momentjs.com/docs/#/manipulating/start-of/

您可能可以使用

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

如果您只需要一次该值。

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

如果计算日期,夏季通常会比午夜(CEST)多造成1欧元或少1小时。日期返回时,这会导致1天的差异。因此,日期必须四舍五入到最近的午夜。因此,代码将是(致jamisOn):

    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
    }

我已经制作了几个原型来为我处理。

// 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-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)
本文地址:http://javascript.askforanswer.com/jiangjavascriptriqichushihuaweiwuyedezuijiafangfashishenme.html
文章标签:
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!