当我尝试从日期减少一天时,日期变为零,而不是在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