JavaScript:如何计算2天前的date?

可能重复:
从javascript中的date中减去天数

我有一个基本上返回2天前的date的JavaScript。 具体如下:

var x; var m_names = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); var d = new Date(); var twoDaysAgo = d.getDate()-2; //change day here var curr_month = d.getMonth(); var curr_year = d.getFullYear(); var x = twoDaysAgo + "-" + m_names[curr_month] + "-" + curr_year; document.write(x); 

假设今天是2012年12月12日,上述将返回2012年12月10日。 我不认为这会在我们进入新的一个月时dynamic地工作,或者将date从-2更改为-15。 它只能从本月3日开始工作。

我怎么能修改这个,所以当它是今天2012年12月12日,我希望它返回我的date15天前应该是2012年11月27日…而不是2012年12月3日?

任何帮助赞赏。 谢谢! 我是一个Javascript新手。

如果你有一个date对象,你可以将它设置为两天之前从date减去两个:

 var d = new Date(); d.setDate(d.getDate() - 2); console.log(d.toString()); // First of month var c = new Date(2017,1,1); // 1 Feb -> 30 Jan c.setDate(c.getDate() - 2); console.log(c.toString()); // First of year var b = new Date(2018,0,1); // 1 Jan -> 30 Dec b.setDate(b.getDate() - 2); console.log(b.toString()); 

您可以执行以下操作

 ​var date = new Date(); var yesterday = date - 1000 * 60 * 60 * 24 * 2; // current date's milliseconds - 1,000 ms * 60 s * 60 mins * 24 hrs * (# of days beyond one to go back) yesterday = new Date(yesterday); console.log(yesterday);​ 

date以毫秒为单位提供,您今天减去两天并使用该毫秒数创build一个新date