在javascript中从日期(其中日期为1)减少一天,导致日期变为零

在javascript中从日期(其中日期为1)减少一天,导致日期变为零,javascript,Javascript,当我尝试从日期减少一天时,日期变为零,而不是在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

当我尝试从日期减少一天时,日期变为零,而不是在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 date2012,2,1,但需要大写-new date2012,2,1

当您使用:new Date2012,2,1时,它会创建日期2012年3月1日,因为第二个月的参数基于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
演示:


您似乎已经了解getMonth返回一个基于0的月份,所以添加了1。但是,正如通过加1得到以1为基础的月份一样,在通过减去1设置以1为基础的月份时,您必须适应。三月通常是3号,但你需要用2号。

在这里很好用。。。你确定你的原始代码没有输入错误吗?e、 上面的新日期无效。仅供参考/测试:我只使用了cpial D,这是一个打字错误。第二步类似于将零设为仅限日期,对吗?类似这样的东西,dt.setDate0;??