2013-04-04 117 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