当我尝试从日期减少一天时,日期变为零,而不是在 java 脚本中调整为上个月的日期。下面是示例。
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 脚本中调整为上个月的日期。下面是示例。
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
演示:http: //jsfiddle.net/8PyFR/3/
您似乎已经了解getMonth()
返回基于 0 的月份,因此您添加了 1。但是就像您获得基于 1 的月份(通过添加 1)一样,您必须在设置基于 1 的月份(通过减去 1)时进行调整。三月通常是 3,但您需要使用 2。