2014-04-15 121 views
34

我有以下腳本返回第二天:JavaScript中,得到了第二天的日期

function today(i) 
    { 
     var today = new Date(); 
     var dd = today.getDate()+1; 
     var mm = today.getMonth()+1; 
     var yyyy = today.getFullYear(); 

     today = dd+'/'+mm+'/'+yyyy; 

     return today; 
    } 

通過使用這樣的:

today.getDate()+1; 

我收到一個月的次日(例如今天會得到16)。

我的問題是,這可能是在每月的最後一天,因此,最終返回32/4/2014

有沒有一種方法,我可以得到第二天保證正確的日期?

+0

http://stackoverflow.com/questions/1160827/javascript-get-next-day-of-a-string – dikesh

回答

48

您可以使用:

var tomorrow = new Date(); 
tomorrow.setDate(today.getDate()+1); 

例如,由於在4月30日,下面的代碼將輸出5月1日:

var day = new Date('Apr 30, 2000'); 
console.log(day); // Apr 30 2000 

var nextDay = new Date(day); 
nextDay.setDate(day.getDate()+1); 
console.log(nextDay); // May 01 2000  

fiddle

+7

我不知道它是否有助於性能,但它可以通過使用'tomorrow.setDate(tomorrow.getDate()+ 1)'簡化;' –

+0

這種方法將不會更新月份。所以如果你要求月份的話,它仍然會返回4月份,例如 – marimaf

+0

@marimaf - 這種方法確實更新了月份。他的例子有點過分,因爲它取決於它與他做出這個答案時的同一個月(我剛剛更新以解決這個問題),但這種方法很有效。 – BryanGrezeszak

0

使用Date對象保證。對於例如,如果您嘗試創建April 31st

new Date(2014,03,31)  // Thu May 01 2014 00:00:00 
+2

請注意,以「0」開頭的數字文字是八進制數,並且已被棄用。所以這個代碼可能在嚴格模式下導致錯誤。而且,你寫的是03而不是04 ... – tsh

+0

@tsh - 零索引。所以3月份是正確的。 – BryanGrezeszak

19

複製粘貼從這裏 Incrementing a date in JavaScript

三個選項:

只需使用JavaScript的Date對象(無庫):

var today = new Date(); 
var tomorrow = new Date(today.getTime() + (24 * 60 * 60 * 1000)); 

或者,如果您不介意更改到位日期(而不是創建 一個新的日期):

var dt = new Date(); 
dt.setTime(today.getTime() + (24 * 60 * 60 * 1000)); 

編輯:又見Jigar的答案及以下大衛的評論:明天VAR =新的日期(); tomorrow.setDate(tomorrow.getDate()+ 1);

使用MomentJS:

var today = moment(); 
var tomorrow = moment(today).add('days', 1); 

(要注意的是添加修改調用它的實例,而不是 返回一個新的實例,所以today.add( '天',1)將今天修改 。這就是爲什麼我們開始與VAR克隆OP =明天....)

使用DateJS,但它並沒有在很長一段時間被更新:

var today = new Date(); // Or Date.today() 
var tomorrow = today.add(1).day(); 

使用未來搜索

+0

請標記引用! – Bergi

+2

將問題作爲重複項而不是c&p答案來處理會更容易和更好。 – Bergi

+1

@Bergi特別是因爲答案已經改變,因爲它被複制... – Michael