用Javascript设置未来的日期

Setting Date in the Future with Javascript

本文关键字:日期 未来 设置 Javascript      更新时间:2023-09-26

我正在尝试根据先前设置的日期生成未来的日期,但我得到奇怪的输出。

var today = new Date(),
    expiration = (today.getTime() + (3*60*1000),
    theFuture = new Date();
//setup future time
theFuture.setDate(expiration);
console.log(theFuture);
//outputs something like:
Tue Jan d) -2147483647 20:33:52 GMT-0500 (EST)

为什么这里的日期是畸形的?最后,我想比较一下日期,但是这里有些不对劲。

setDate的参数是该月的日期,而getTime的返回值是自1970年1月1日以来的毫秒数。你把月份的日期设置为1437007985574,也就是40亿年之后。你会得到一个毫无意义的结果,因为日期格式化函数不是为处理这么大的日期而设计的,而且它们在内部溢出。

由于您使用getTime以毫秒为单位获取时间,因此您应该使用setTime以相同的方式设置它:

var today = new Date(),
    expiration = today.getTime() + (3*60*1000),
    theFuture = new Date();
//setup future time
theFuture.setTime(expiration);
alert(theFuture);

getDate()返回当月的第几天(介于1到31之间)。这就是为什么setDate会产生一个错误的日期