2013-04-04 111 views
1

當我嘗試從日期減少一天時,日期變爲零,而不是在java腳本中調整爲前一個月的日期。下面是例子。在javascript中導致日期變爲零的日期(日期爲1st)的日期變爲零

var dt = new date(2012, 2, 1); 
dt.setDate((dt.getDate() - 1)); 

logger.info(dt.getFullYear()+"-"+(dt.getMonth()+1) + "-" + dt.getDate()); 

Result is : 2012-2-0 
+3

在這裏工作得很好......確保你的原始代碼沒有錯字?例如你已經有了'new date()',這是無效的。 – 2013-04-04 17:40:45

+0

供參考/測試:http://jsfiddle.net/8PyFR/1/ – Ian 2013-04-04 17:43:58

回答

0

它工作得很好,我想你誤解的數字是什麼(雖然我從來沒有得到0)。雖然您確實使用了new date(2012, 2, 1),但需要大寫 - new Date(2012, 2, 1)

當您使用:new Date(2012, 2, 1)時,它會創建日期「2012年3月1日」,因爲month(第二個參數)是基於0的日期。

當你減去一天,它將成爲「2012-2-29」,即「2012年2月29日」。

var dt = new Date(2012, 2, 1); // March 1st, 2012 
dt.setDate((dt.getDate() - 1)); 

console.log(dt.getFullYear() + "-" + (dt.getMonth() + 1) + "-" + dt.getDate()); // February 29th, 2012 

DEMO:http://jsfiddle.net/8PyFR/3/

你似乎已經明白,getMonth()返回基於0的一個月,所以你加入1.但是,正如你得到一個基於1個月(加1) ,在設置基於1的月份時(通過減1),您必須適應。三月通常是3,但你需要使用2.

+0

我只用過cpial D,這是一個錯字。第二步就像設置零到目前爲止只是正確的?像這樣,dt.setDate(0); ?? – user1614862 2013-04-04 18:16:58