JavaScript的Date对象没有实现任何类型的add函数,这让我感到惊讶。

我只是想要一个函数,可以这样做:

var now = Date.now(); var fourHoursLater = now.addHours(4); 函数Date.prototype.addHours(h) { //我如何实现这个? }

我只是想要一些指路的指点。

我需要做字符串解析吗? 我可以使用setTime吗? 毫秒呢?

是这样的:

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

这看起来真的很奇怪——它真的有用吗?


当前回答

Datejs库中有一个添加。

这里是JavaScript日期方法。kennebec明智地提到了getHours()和setHours();

其他回答

有点乱,但很管用!

给出如下日期格式:2019-04-03T15:58

  //Get the start date.
  var start = $("#start_date").val();
  //Split the date and time.
  var startarray = start.split("T");
  var date = startarray[0];
  var time = startarray[1];

  //Split the hours and minutes.
  var timearray = time.split(":");

  var hour = timearray[0];
  var minute = timearray[1];
  //Add an hour to the hour.
  hour++;
  //$("#end_date").val = start;
  $("#end_date").val(""+date+"T"+hour+":"+minute+"");

您的输出将是:2019-04-03 t16 . 58

kennebec建议的版本在切换到DST或从DST时将失败,因为它是设置的小时数。

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

加上h小时,与时间系统特性无关。

Jason Harwig的方法也很有效。

Datejs库中有一个添加。

这里是JavaScript日期方法。kennebec明智地提到了getHours()和setHours();

我觉得这个应该能搞定

var nextHour =日期。 游戏机。log (nextHour)

JavaScript本身有糟糕的日期/时间API。尽管如此,你可以在纯JavaScript中这样做:

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