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 */)?

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


当前回答

你可以使用Moment.js库。

var moment = require('moment');
foo = new moment(something).add(10, 'm').toDate();

其他回答

您甚至可以在添加2小时后使用moment函数将日期格式化为所需的格式。

var time = moment(new Date(new Date().setHours(new Date().getHours() + 2))).format("YYYY-MM-DD");
    
console.log(time);

下面的代码将为一个日期增加4个小时(例如今天的日期):

var today = new Date();
today.setHours(today.getHours() + 4);

如果您尝试将4添加到23(请参阅文档),则不会导致错误:

如果指定的参数超出预期范围,setHours()将尝试更新date对象中的日期信息

Datejs库中有一个添加。

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

最简单的方法是:

var d = new Date();
d = new Date(d.setHours(d.getHours() + 2));

它将使当前时间增加2小时。

d = 2021年1月30日星期六23:41:43 GMT+0500(巴基斯坦标准时间)。

d加2小时后的值= 2021年1月31日01:41:43 GMT+0500(巴基斯坦标准时间)。

处理此问题的另一种方法是将日期转换为unix时间(epoch),然后以(milli)秒为单位添加等效日期,然后将其转换回来。通过这种方式,您可以处理日期和月份的转换,例如将4小时加到21小时,结果应该是第二天01:00。