用JavaScript计算昨天的日期

时间:2011-04-01 09:11:08

标签: javascript date

如何计算昨天作为JavaScript中的日期?

18 个答案:

答案 0 :(得分:370)

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)

答案 1 :(得分:73)

效率不高,但作为oneliner:

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

上面创建了三个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)

或者,如果您更喜欢带箭头功能的ES6:

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

答案 2 :(得分:59)

试试这个

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

答案 3 :(得分:51)

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

昨天完全找到同一时间:

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

如果您想要无依赖性,那么我建议您使用http://momentjs.com

答案 4 :(得分:17)

概括问题并使用其他差异计算:

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

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

两天前:

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

一小时前:

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

答案 5 :(得分:7)

//Create a date object using the current time
var now = new Date();

//Subtract one day from it
now.setDate(now.getDate()-1);

答案 6 :(得分:7)

我使用moment库,它非常灵活且易于使用。

在你的情况下:

patterns <- c("c4", "c5") #you can change it

colnames(df)[sapply(X = colnames(df), FUN = function (X) substr(X, 1, 2) %in% patterns  | substr(X, nchar(X) - 1, nchar(X)) %in% patterns )]

======更新======

let yesterday = moment().add(-1, 'day').toDate();

答案 7 :(得分:5)

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

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

答案 8 :(得分:3)

new Date(new Date().setDate(new Date().getDate()-1))

答案 9 :(得分:2)

d.setHours(0,0,0,0);

会做的伎俩

答案 10 :(得分:2)

尝试一下,对我有用:

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

这让我昨天回来了一个约会对象

答案 11 :(得分:2)

var today = new Date();
var yesterday1 = new Date(new Date().setDate(new Date().getDate() - 1));
var yesterday2 = new Date(Date.now() - 86400000);
var yesterday3 = new Date(Date.now() - 1000*60*60*24);
var yesterday4 = new Date((new Date()).valueOf() - 1000*60*60*24);
console.log("Today: "+today);
console.log("Yesterday: "+yesterday1);
console.log("Yesterday: "+yesterday2);
console.log("Yesterday: "+yesterday3);
console.log("Yesterday: "+yesterday4);

答案 12 :(得分:1)

这里是一个班轮,用于以文本YYYY-MM-DD的格式获取昨天的日期并处理时区偏移。

new Date(Date.now() - 1 * 86400000 - new Date().getTimezoneOffset() * 60000).toISOString().split('T')[0]

它可以明显地更改为返回日期,即x天。包括时间等。

console.log(Date())
console.log(new Date(Date.now() - 1 * 86400000 - new Date().getTimezoneOffset() * 60000).toISOString().split('T')[0]); // "2019-11-11"
console.log(new Date(Date.now() - 1 * 86400000 - new Date().getTimezoneOffset() * 60000).toISOString().split('.')[0].replace('T',' ')); // "2019-11-11 11:11:11"

// that is: [dates] * 24 * 60 * 60 * 1000 - offsetinmin * 60 * 1000    // this is: [dates] * 24 * 60 * 60 * 1000 - offsetinmin * 60 * 1000

答案 13 :(得分:0)

第二名的法比亚诺和其他一些人已经分享了相似的答案,但是运行该选项应该会使事情看起来更明显。

86400000 =一天中的毫秒数

const event = new Date();
console.log(new Date(Date.parse(event) - 86400000))
console.log(event)

答案 14 :(得分:0)

解决边界日期问题(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);

答案 15 :(得分:0)

您可以使用momentjs,使用该库可以完成很多工作。

获取具有当前时间的昨天日期 moment().subtract(1, 'days').toString()

获取昨天的日期和开始日期 moment().subtract(1, 'days').startOf('day').toString()

答案 16 :(得分:0)

如果您想要获取昨天的日期并以人类可读格式格式化该日期,请考虑创建一个类似于此的自定义DateHelper对象:

&#13;
&#13;
var DateHelper = {
    addDays : function(aDate, numberOfDays) {
        aDate.setDate(aDate.getDate() + numberOfDays); // Add numberOfDays
        return aDate;                                  // Return the date
    },
    format : function format(date) {
        return [
           ("0" + date.getDate()).slice(-2),           // Get day and pad it with zeroes
           ("0" + (date.getMonth()+1)).slice(-2),      // Get month and pad it with zeroes
           date.getFullYear()                          // Get full year
        ].join('/');                                   // Glue the pieces together
    }
}

// With this helper, you can now just use one line of readable code to :
// ---------------------------------------------------------------------
// 1. Get the current date
// 2. Subtract 1 day
// 3. Format it
// 4. Output it
// ---------------------------------------------------------------------
document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), -1));
&#13;
&#13;
&#13;

(另见this Fiddle

答案 17 :(得分:-1)

“ Date.now()-86400000”在夏令时结束的那一天(该日期为25小时)不起作用

另一种选择是使用Closure:

var d = new goog.date.Date();
d.add(new goog.date.Interval(0, 0, -1));