2011-05-08 247 views
11

我在格式(mm/dd/yy)中顯示日期並且想要添加30天。我只是好奇最好的方法來做到這一點?我是JavaScript新手,所以例子會有所幫助。添加30天至日期(月/日/年)

EDITED

對不起我使用美國日期格式(MM/DD/YY)。

回答

34

只需30天添加到今天的日期:

var now = new Date(); 
now.setDate(now.getDate() + 30); 

然而,就是你真正想做的事?或者你想今天再加上一個月嗎?

可以使用AD/M/Y日期轉換爲日期對象:

var dString = '9/5/2011'; 
var dParts = dString.split('/'); 
var in30Days = new Date(dParts[2] + '/' + 
         dParts[1] + '/' + 
         (+dParts[0] + 30) 
       ); 

對於美國的日期格式,交換部件0和1:

var in30Days = new Date(dParts[2] + '/' + 
         dParts[0] + '/' + 
         (+dParts[1] + 30) 
       ); 

但它是更好地得到將日期轉換爲ISO8601格式,然後再將其傳遞給該函數,那麼您確實不應該在日期解析和算術中混合使用相同的函數。一個全面的日期解析函數是複雜的(不是過多,但它們很繁瑣,需要大量的測試),一旦你有一個日期對象,算法很簡單。

+0

您需要做更多的工作來創建日期o在問題中使用非美國日期格式。 – Phil 2011-05-08 22:49:47

+0

不,我不知道。上面構建了一個ISO8601格式的日期字符串,ECMAScript日期對象默認解析這個日期字符串。原來與格式無關的小錯誤,但我自此編輯過。 :-) – RobG 2011-05-08 22:59:24

+0

@RobG我的意思是解析非美國日期字符串設置初始日期對象時間(* ed:看起來像你有我的意思*);-) – Phil 2011-05-08 23:00:58

8

一個簡單的方法來完成它是發送Date構造函數中的時間戳值。要計算30天時間戳測量:

30 * 24 * 60 * 60 * 1000

然後,你需要的當前時間戳:

Date.now()

最後,和這兩個值,並將結果發送如在構造函數中設置了一個param:

var nowPlus30Days = new Date(Date.now() + (30 * 24 * 60 * 60 * 1000));

+0

var nowPlus30Days = new Date(Date.now()+ 30 * 24 * 60 * 60 * 1000).toJSON()。slice(0,10); – Zerubbabel 2016-07-10 01:54:05

相關問題