JavaScript:如何计算2天前的日期? [重复]

时间:2022-08-25 17:43:26

Possible Duplicate:
Subtract days from a date in javascript

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

I have got a JavaScript that basically returns a date that is 2 days ago. It is as follows:

我有一个基本上返回2天前的日期的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);

Assuming today is 12-December-2012, the above will return the date 10-December-2012. I don't think this will work dynamically as we move forward into a new month, OR, change the day from -2 to -15. It will work only from the 3rd of the month.

假设今天是2012年12月12日,以上将返回2012年12月10日的日期。我不认为这会在我们进入新的月份时动态起作用,或者,将日期从-2更改为-15。它只能在本月3日起作用。

How can I modify this so when it is 12-December-2012 today and I want it to return me the date 15 days ago it should be 27-November-2012... and not -3-December-2012?

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

Any help appreciated. Thanks! I'm a Javascript newbie.

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

2 个解决方案

#1


95  

If you have a date object, you can set it to two days previous by subtracting two from the 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());

#2


20  

You can do the following

您可以执行以下操作

​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);​

The Date is available as a number in miliiseconds, you take today subtract two days and create a new date using that number of milliseconds

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

#1


95  

If you have a date object, you can set it to two days previous by subtracting two from the 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());

#2


20  

You can do the following

您可以执行以下操作

​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);​

The Date is available as a number in miliiseconds, you take today subtract two days and create a new date using that number of milliseconds

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