如何在JavaScript中计算昨天作为日期?
当前回答
d.setHours(0,0,0,0);
会成功的
其他回答
试一试,对我有用:
var today = new Date();
var yesterday = new Date(today.setDate(today.getDate() - 1)); `
这让我得到了一个日期对象回来为昨天
解决边界日期问题(2020,01,01)-> 2019,12,31
var now = new Date();
return new Date(now.getMonth() - 1 === 0 ? now.getFullYear() - 1 : now.getFullYear(),
now.getDate() - 1 === 0 ? now.getMonth() - 1: now.getMonth(),
now.getDate() - 1);
[2022年4月]:下面是一个扩展Date原型的代码片段(不污染全局命名空间)
[edit sept 2020]:一个包含之前答案的片段,并添加了一个箭头函数。
// a (not very efficient) oneliner let yesterday = new Date(new Date().setDate(new Date().getDate()-1)); console.log(`Yesterday (oneliner)\n${yesterday}`); // a function call yesterday = ( function(){this.setDate(this.getDate()-1); return this} ) .call(new Date); console.log(`Yesterday (function call)\n${yesterday}`); // an iife (immediately invoked function expression) yesterday = function(d){ d.setDate(d.getDate()-1); return d}(new Date); console.log(`Yesterday (iife)\n${yesterday}`); // oneliner using es6 arrow function yesterday = ( d => new Date(d.setDate(d.getDate()-1)) )(new Date); console.log(`Yesterday (es6 arrow iife)\n${yesterday}`); // use a method const getYesterday = (dateOnly = false) => { let d = new Date(); d.setDate(d.getDate() - 1); return dateOnly ? new Date(d).toDateString() : d; }; console.log(`Yesterday (method)\n${getYesterday()}`); console.log(`Yesterday (method dateOnly=true)\n${getYesterday(true)}`); // use Date.now console.log(`Yesterday, using Date.now\n${new Date(Date.now() - 864e5)}`); .as-console-wrapper { max-height: 100% !important; }
//Create a date object using the current time
var now = new Date();
//Subtract one day from it
now.setDate(now.getDate()-1);
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)