在JavaScript中获取x个以前的日期

时间:2011-12-23 05:00:23

标签: javascript jquery date

我正在尝试使用JavaScript从过去的X天算起来。

然而,我只能弄清楚如何获得今天的日期,但现在是以前的日期。

说如果我想要包括今天在内的最后6天,它将被打印出来:

  • 11月5日星期一
  • 11月4日星期日
  • 11月3日星期六
  • 11月2日星期五
  • 11月1日星期四
  • 10月31日星期三

到目前为止,我已经得到了今天的成就。

(function() {
    var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],
        months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec'];
    Date.prototype.getMonthName = function() {
        return months[this.getMonth()];
    };
    Date.prototype.getDayName = function() {
        return days[this.getDay()];
    };
})();

var todayDate = new Date(),
      day = todayDate.getDate(),
      weekday = todayDate.getDayName(),
      month = todayDate.getMonthName(),
      today = weekday + ' ' + month + ' ' + day;

2 个答案:

答案 0 :(得分:1)

我想这应该有效:

var msecsIn1Day = 86400000, c = 0;
var todayDate = new Date();
while(c < 6) {
  var d = new Date(todayDate.getTime() - msecsIn1Day * c); 
  day = d.getDate(),
  weekday = d.getDayName(),
  month = d.getMonthName(),
  today = weekday + ' ' + month + ' ' + day;
  alert(today);
  c++;
}

答案 1 :(得分:0)

使用86400000(毫秒)方法会遇到夏令时问题

假设

var d =新日期(&#34; 23/12/2012 00:00:00&#34;);

var e = new Date(d.getTime() - 86400000);

和DST是+1然后e将是23/12/2012 01:00:00

要解决此问题,您可以使用函数来计算之前的日期:

Date.prototype.getPreviousDate = function(beforeDays) {
    if (!days) { beforeDays = 0 }
    return new Date(new Date().setDate(this.getDate() - beforeDays));
}

然后你可以像

一样使用它

var todayDate = new Date(),c = 0;

while(c > 6){

  var d = todayDate.getPreviousDate(c),
  day = d.getDate(),
  weekday = d.getDayName(),
  month = d.getMonthName(),
  today = weekday + ' ' + month + ' ' + day;
  alert(today);


}

有关详细信息,请参阅this question