2012-10-09 73 views
22
var dateObj = new Date(); 
var val = dateObj.getTime(); 
//86400 * 1000 * 3 Each day is 86400 seconds 
var days = 259200000; 

val = val + days; 
dateObj.setMilliseconds(val); 
val = dateObj.getMonth() + 1 + "/" + dateObj.getDate() + "/" + dateObj.getFullYear(); 
alert(val); 

我试图把当前的日期,加上毫秒三天吧,3天后从当前具有日期戳显示。例如 - 如果今天是2012年10月9日,那么我想说它是2012年10月12日。试图以毫秒为单位增加3天当前日期

这种方法不工作,我得到了几个月和几天的方式。有什么建议么?

+1

我想你想时刻设定,而不是setMilliseconds –

+0

尝试:'dateObj.setTime(dateObj.getTime()+ 8.64e7 * 3)'但注意夏令时更换可能会导致意想不到的结果。比较简单,只需在日期中添加3:'dateObj.setDate(dateObj.getDate()+ 3)'。 – RobG

回答

38

要添加时间,得到当前的日期再加入,以毫秒为单位,具体的时间量,然后创建一个新的日期值:

// get the current date & time 
var dateObj = Date.now(); 

// Add 3 days to the current date & time 
// I'd suggest using the calculated static value instead of doing inline math 
// I did it this way to simply show where the number came from 
dateObj += 1000 * 60 * 60 * 24 * 3; 

// create a new Date object, using the adjusted time 
dateObj = new Date(dateObj); 

为了进一步解释这一点,原因dataObj.setMilliseconds()不起作用是因为它将dateobj的毫秒PROPERTY设置为指定的值(介于0和999之间的值)。它不会将对象的日期设置为毫秒。

// assume this returns a date where milliseconds is 0 
dateObj = new Date(); 

dateObj.setMilliseconds(5); 
console.log(dateObj.getMilliseconds()); // 5 

// due to the set value being over 999, the engine assumes 0 
dateObj.setMilliseconds(5000); 
console.log(dateObj.getMilliseconds()); // 0 
+1

我只是变种天= 259200000,因为它是静态的,永远不会改变。谢谢!好奇,为什么没有设置Milliseconds(天)做同样的事情? – dman

+1

我真的不知道。我刚从的experiance知道这是否是静态值,然后执行计算出像以上。 – SReject

+4

由于这是(一年后)拿出添加毫秒到日后的第一个项目,原因setMilliseconds不起作用是它设置Date对象的毫秒部分。因此,在正常操作中,它期望从0-999的数字。然而,它允许任何数目的,并且是如添加的值的日期不带日期的前一毫秒组件。 –

3

如果需要制造日期计算在JavaScript中,使用moment.js

moment().add('days', 3).calendar(); 
+7

对你没有任何意义,但建议使用整个库来完成这样一个简单的任务似乎完全是这样做的。 – SReject

+5

没有冒犯,当其他人阅读我的代码时,他可能会比接受的答案更好地理解moment.js一行。 –

+2

这个任务没有什么“简单”。考虑夏时制的变化。 –

4

试试这个:

var dateObj = new Date(Date.now() + 86400000 * 3);

3

使用此代码

var dateObj = new Date(); 
var val = dateObj.getTime(); 
//86400 * 1000 * 3 Each day is 86400 seconds 
var days = 259200000; 

val = val + days; 
dateObj = new Date(val); // ********important*********// 
val = dateObj.getMonth() + 1 + "/" + dateObj.getDate() + "/" + dateObj.getFullYear(); 
alert(val); 
相关问题