2013-03-19 66 views
0

這是我的代碼:在此日期功能中添加日期有什麼不對?

var dat = new Date("24/03/2013"); 
dat.setDate(dat.getDate() + 7); 
console.log(dat) 

但它打印Tue Jan 06 2015 00:00:00 GMT+0100

日期錯誤:應該是2013年3月31日(我想用這種格式打印它)。

+0

哪些是您使用(如果只有這樣我們才能避免它在未來)瀏覽器? :-) – paxdiablo 2013-03-19 09:47:17

回答

3

我的瀏覽器(Chrome)打印出「無效日期」,但顯然你的解釋是以mm/dd/yyyy格式而不是dd/mm/yyyy格式來初始化日期。因此,它認爲它是2013年24th月的第3天,即2015年1月3日。

我不確定爲什麼它會在1月6日將其打印爲7天。

最安全的方式是明確給出的數字:

var dat = new Date(2013, 2, 24); 
+1

值得注意的是,採用這種方法,1月份等於0,12月份等於11 - 如果通過格式正確的字符串,情況並非如此。 – 2013-03-19 09:59:27

0

你應該在之前打印出你的日期你加7。我懷疑它被設置爲在2013年3 天第24個月的,相當於地方接近2015年一月

這就是爲什麼你得到的日期從當前工作進展順利。爲什麼它給你的6 一月的,而不是10 ,我不知道,但你可能只需要改變你的輸入字符串的mm/dd/yyyy美國的格式,或使用a more explicit constructor that's not subject to misinterpretation修復:

var d = new Date(year, month, day, hours, minutes, seconds, milliseconds); 
1

更改日期的格式把後的一個月:

var dat = new Date("03/24/2013"); 
dat.setDate(dat.getDate() + 7); 
console.log(dat) 

對我來說這將返回:

Sun Mar 31 2013 00:00:00 GMT+0000 (GMT Standard Time) 
+0

不,它打印出'Sat Nov 02 2013 00:00:00 GMT + 0100' – markzzz 2013-03-19 09:41:38

+0

@markzzz您確定您的代碼與答案完全相同嗎?是否http://jsfiddle.net/cCEJT/也打印11月2日? – JJJ 2013-03-19 09:42:52

+0

@markzzz您的電腦日期必須錯誤。 http://jsfiddle.net/VavXa/ – 2013-03-19 09:42:56

0

試試這個!

var aDate = new Date(2013,3,24); 
     aDate.setDate(aDate.getDate() + 7); 
     var dateString = aDate.getDate() + "-" + aDate.getMonth() + "-" + aDate.getFullYear(); 
     alert(dateString); 
+0

你的意思是把這些參數放在引號中嗎? – paxdiablo 2013-03-19 09:47:55

+0

ya..just附加字符串 – divyabharathi 2013-03-19 09:48:56

+1

不,我的意思是在日期構造函數。 – paxdiablo 2013-03-19 09:52:20

1

您應該先給出月份編號。然後你會得到正確的答案

試試這個代碼

var dat = new Date("03/24/2013"); 
dat.setDate(dat.getDate() + 7); 
var curr_date = dat.getDate(); 
var curr_month = dat.getMonth() + 1; //Months are zero based 
var curr_year = dat.getFullYear(); 
console.log(curr_date + "/" + curr_month + "/" + curr_year);