Получить х предыдущих дат в JavaScript - PullRequest
0 голосов
/ 23 декабря 2011

Я пытаюсь подсчитать прошедшие X дней с сегодняшнего дня, используя JavaScript.

Однако я могу понять, как получить сегодняшнюю дату, а теперь предыдущие.

Скажите, если бы я хотел, чтобы последние 6 дней, включая сегодня, были напечатаны так:

  • Понедельник 5 ноября
  • Воскресенье 4 ноября
  • суббота 3 ноября
  • Пятница, ноябрь 2
  • Четверг, ноябрь 1
  • Среда, 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 ]

1 голос
/ 23 декабря 2011

Я думаю, это должно работать:

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++;
}
0 голосов
/ 23 декабря 2011

при использовании подхода 86400000 (в миллисекундах) возникнет проблема с переходом на летнее время

предположим,

var d = new Date ("23/12/2012 00:00:00");

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);


}

для получения более подробной информации см. этот вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...