添加到Epoch以在Javascript中查找新日期

添加到Epoch以在Javascript中查找新日期,javascript,date,epoch,Javascript,Date,Epoch,我正在编写一个脚本的响应,以确定有效期。响应是7200,开发者建议我这是一个划时代的值,应该等于3个月。我以前从未使用过Epoch,所以不明白它是如何工作的 给我的公式是(在+expires\u in创建)*1000,我得到的建议会告诉我新的日期 我使用了dtmNow=newdate(Date.now()).toISOString()返回的2016-08-23T06:33:35.936Z正确,但当我尝试dtmExpires=newdate((Date.now()+7200)*1000).toIS

我正在编写一个脚本的响应,以确定有效期。响应是
7200
,开发者建议我这是一个划时代的值,应该等于3个月。我以前从未使用过Epoch,所以不明白它是如何工作的

给我的公式是
(在+expires\u in创建)*1000
,我得到的建议会告诉我新的日期

我使用了
dtmNow=newdate(Date.now()).toISOString()
返回的
2016-08-23T06:33:35.936Z
正确,但当我尝试
dtmExpires=newdate((Date.now()+7200)*1000).toISOString()时它返回了
+048613-09-25T09:58:58.000Z

我不确定我在这里做错了什么?

返回自历元以来的毫秒数(当前时间值)。如果向日期构造函数传递一个数字,它将用作新日期实例的时间值。在以下方面:

new Date(Date.now()).toISOString()
与以下内容完全相同:

new Date().toISOString()
i、 你不需要Date.now()。如果要向日期添加3个月,请使用日期方法:

// Get a Date for now
var now = new Date();

// Add 3 months
now.setMonth(now.getMonth() + 3);
然而,如果现在是11月30日,那么上面将尝试为2月30日创建一个日期,最终将是3月1日或2日,这取决于它是否是闰年。因此,如果当月修改的日期与原始日期不匹配,可以将其设置回上个月的最后一天

如果您想添加(比如)90天,那么可以使用与下面类似的setDate和getDate方法进行添加。如果跨越夏令时边界,这也会考虑夏令时边界,而设置时间值则不会

SO控制台以UTC格式写入日期,因此在查看以下结果时应将其考虑在内:

功能添加3个月(d){
//如果未提供d,则默认为当前日期
d=d | |新日期();
//记住当前日期
var date=d.getDate();
//加3个月
d、 setMonth(d.getMonth()+3);
//将日期设置回前一天的最后一天
//如果日期不相同,则为月份
如果(d.getDate()!=date)d.setDate(0);
返回d;
}
//再加上3个月到今天
log(add3Months());
//11月30日前再加3个月

log(添加3个月(新日期(2016,10,30))
一个纪元是衡量事物的基准。javascript时间值的纪元是1970-01-01T00:00:00Z。差值以毫秒为单位,7200是纪元后的7.2秒。没有一个度量单位,其中7200个等于3个月,即7.776e9毫秒。@RobG谢谢!我将代码更改为
dtmExpires=newdate(Date.now()+(7200*1000000)).toISOString()
返回了
2016-11-14
这是84天:D如果你作为答案发布,我会接受:)不幸的是,我需要使用我正在使用的API给出的响应,即7200,因此我需要使用
Date.now()+(7200*1000000)
以便在他们更改响应时准确无误。不会总是3个月。也不需要整整三个月。他们怎么说都行。谢谢你的信息!非常有用。