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对象