这两个堆栈溢出问题提出了类似的问题,但他们的解决方案对我来说似乎不起作用: 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(东部 白天时间)。
这显然不正确。为什么?
答案 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]);