如何获得"日期前一天"在JavaScript中?

时间:2013-05-06 15:15:41

标签: javascript

这两个堆栈溢出问题提出了类似的问题,但他们的解决方案对我来说似乎不起作用: Javascript Yesterday Javascript code for showing yesterday's date and todays date

考虑到约会,我需要前一天(前一天)的日期。这里有一个上面提到的解决方案的小提琴,以及一个对我不起作用的场景: http://jsfiddle.net/s3dHV/

var date = new Date('04/28/2013 00:00:00');
var yesterday = new Date();
yesterday.setDate(date.getDate() - 1);
alert('If today is ' + date + ' then yesterday is ' + yesterday);

对我而言,提醒

  

如果今天是2013年4月28日星期日00:00:00 GMT-0400(东部夏令时间)   然后昨天是2013年5月27日星期一11:12:06 GMT-0400(东部   白天时间)。

这显然不正确。为什么?

3 个答案:

答案 0 :(得分:33)

你正在创造一个全新的约会。

var yesterday = new Date(date.getTime());
yesterday.setDate(date.getDate() - 1);

这将使你成为第一次约会的副本。当你致电setDate()时,它只会影响当天,而不是整个事情。如果您从原始日期的副本开始,然后设置月份的日期,您将得到正确的答案。

答案 1 :(得分:8)

试试这个:

var date = new Date('04/28/2013 00:00:00');
var yesterday = new Date(date.getTime() - 24*60*60*1000);

答案 2 :(得分:-4)

var allmonths = [
    '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'
];
var alldates = [
    '01', '02', '03', '04', '05', '06', '07', '08', '09', '10',
    '11', '12', '13', '14', '15', '16', '17', '18', '19', '20',
    '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31'
];

var today = "2014-12-25";   
var aDayBefore = new Date(today);
aDayBefore.setDate(aDayBefore.getDate() - 1);

document.write(aDayBefore.getFullYear() 
  + '-' + allmonths[aDayBefore.getMonth()] 
  + '-' + alldates[aDayBefore.getDate() - 1]);