當我嘗試從日期減少一天時,日期變爲零,而不是在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
當我嘗試從日期減少一天時,日期變爲零,而不是在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
它工作得很好,我想你誤解的數字是什麼(雖然我從來沒有得到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.
我只用過cpial D,這是一個錯字。第二步就像設置零到目前爲止只是正確的?像這樣,dt.setDate(0); ?? – user1614862 2013-04-04 18:16:58
在這裏工作得很好......確保你的原始代碼沒有錯字?例如你已經有了'new date()',這是無效的。 – 2013-04-04 17:40:45
供參考/測試:http://jsfiddle.net/8PyFR/1/ – Ian 2013-04-04 17:43:58