Javascript昨天

我怎样才能在JavaScript中计算“昨天”?

var date = new Date(); date ; //# => Fri Apr 01 2011 11:14:50 GMT+0200 (CEST) date.setDate(date.getDate() - 1); date ; //# => Thu Mar 31 2011 11:14:50 GMT+0200 (CEST) 

尝试这个

 var d = new Date(); d.setDate(d.getDate() - 1); 

不是非常有效,但作为oneliner:

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

上面创build了三个Date对象,这是不必要的浪费。 这可以通过以下方式简化为一个实例:

 var yesterday = (function(){this.setDate(this.getDate()-1); return this}) .call(new Date) 

或者,如果您愿意:

 var yesterday = (function(d){ d.setDate(d.getDate()-1); return d})(new Date) 

或者,如果你喜欢带有箭头function的ES6:

 let yesterday = ( d => new Date(d.setDate(d.getDate()-1)) )(new Date); 

令人惊讶的是没有答案指向最简单的跨浏览器解决scheme

要find昨天完全一样的时间:

 var yesterday = new Date(Date.now() - 86400000); // that is: 24 * 60 * 60 * 1000 

那就是如果你想要依赖免费,否则我会build议使用http://momentjs.com

推广这个问题,并使用其他差异计算:

 var yesterday = new Date((new Date()).valueOf() - 1000*60*60*24); 

这将基于“now”的值创build一个新的date对象,作为表示以毫秒为单位减去一天的unix时期的整数。

两天前:

 var twoDaysAgo = new Date((new Date()).valueOf() - 1000*60*60*24*2); 

一小时前:

 var oneHourAgo = new Date((new Date()).valueOf() - 1000*60*60); 
 //Create a date object using the current time var now = new Date(); //Subtract one day from it now.setDate(now.getDate()-1); 

这将在昨天00:00以分钟精度产生

 var d = new Date(); d.setDate(d.getDate() - 1); d.setTime(d.getTime()-d.getHours()*3600*1000-d.getMinutes()*60*1000); 
 d.setHours(0,0,0,0); 

会做的伎俩

试试这个,为我工作:

 var today = new Date(); var yesterday = new Date(today.setDate(today.getDate() - 1)); ` 

这给了我昨天的date对象