向JavaScript Date对象添加小时?

南笙酒味 提交于 2020-02-27 18:18:11

令我惊讶的是,JavaScript的Date对象没有实现任何类型的add函数。

我只是想要一个可以做到这一点的函数:

var now = Date.now();
var fourHoursLater = now.addHours(4);

function Date.prototype.addHours(h) {

   // how do I implement this?  

}

我只是想在一个方向的一些指针。

  • 我需要进行字符串解析吗?

  • 我可以使用setTime吗?

  • 毫秒呢?

像这样:

new Date(milliseconds + 4*3600*1000 /*4 hrs in ms*/)?  

不过,这似乎确实很骇人-甚至行得通吗?


#1楼

Datejs库中有一个添加

这是JavaScript date方法 。 肯纳贝克明智地提到了getHours()和setHours();


#2楼

JavaScript本身具有可怕的日期/时间API。 但是,您可以使用纯JavaScript来执行此操作:

Date.prototype.addHours = function(h) {
  this.setTime(this.getTime() + (h*60*60*1000));
  return this;
}

#3楼

Date.prototype.addHours= function(h){
    this.setHours(this.getHours()+h);
    return this;
}

测试:

alert(new Date().addHours(4));

#4楼

当更改为DST或从DST更改时,kennerbec建议的版本将失败,因为它是设置的小时数。

this.setUTCHours(this.getUTCHours()+h);

将增加h小时, this独立的实时系统特殊性。 杰森·哈维格(Jason Harwig)的方法同样有效。


#5楼

您可以使用momentjs http://momentjs.com/库。

var moment = require('moment');
foo = new moment(something).add(10, 'm').toDate();
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!