Вывести последние семь дней календаря

183
01 апреля 2018, 22:09

Хочу сделать диаграмму активности пользователя за прошедшие 7 дней календаря. Никак не могу сообразить как это сделать. Нужно получить массив дат начиная с текущей даты т.е [31.03.2018, 30.03.2018, 29.03.2018 т.д]

Answer 1

let now = new Date(); 
 
let time = now.getTime(); 
now = new Date(time - (time % 86400000)); 
 
let arr = []; 
let arr2 = []; 
 
for (let i = 0; i < 7; i++, now.setDate(now.getDate() - 1)) { 
  arr.push(new Date(now.getTime())); 
  arr2.push(now.getDate() + '.' + (now.getMonth() + 1) + "." + now.getFullYear()); 
} 
 
console.log(arr2); 
console.log(arr);

Answer 2

/** 
 * 
 * @param {Number} _n 
 * @param {String} _date 
 */ 
function getA(_n,_date) { 
  let now = (_date) 
    ? new Date(_date) 
    : new Date 
  let y = now.getFullYear() 
  let m = now.getMonth() 
  let d = now.getDate() 
 
  let arr = [] 
  for (var i = 0; i < _n; i++) { 
    let date = new Date 
     
    /** 
      * Sets the year of the Date object using local time. 
      * @param year A numeric value for the year. 
      * @param month A zero-based numeric value for the month (0 for January, 11 for December). Must be specified if numDate is specified. 
      * @param date A numeric value equal for the day of the month. 
      */ 
    date.setFullYear(y,m,d - i) 
 
    // --> 
    let res1 = date.toLocaleDateString() 
    // <-- 
 
    // --> 
    let y2 = date.getFullYear() 
    let m2 = date.getMonth() 
    m2++ // ©month A zero-based numeric value for the month (0 for January, 11 for December). 
    let d2 = date.getDate() 
    if((''+m2).length===1){ 
      m2 = '0'+m2 // добавить ноль в начале 
    } 
    if((''+d2).length===1){ 
      d2 = '0'+d2 // добавить ноль в начале 
    } 
    let res2 = [ 
      y2, 
      m2, 
      d2, 
    ].join('-')// разделитель 
    // <-- 
    arr.push(res1+'    или    '+res2) 
  } 
  return arr 
} 
 
window.addEventListener('load',() => { 
  let div = document.createElement('div') 
 
  getA(7,'01.04.2018').forEach(_str => { 
    div.innerHTML += '<br>' + _str 
  }) 
  div.innerHTML += '<br>' 
 
  getA(7,'2018 01 04').forEach(_str => { 
    div.innerHTML += '<br>' + _str 
  }) 
  div.innerHTML += '<br>' 
 
  getA(7).forEach(_str => { 
    div.innerHTML += '<br>' + _str 
  }) 
 
  document.body.appendChild(div) 
})

подробнее почитать можно тут:
https://learn.javascript.ru/datetime
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Date

READ ALSO
как работает функция compose() в javaScript?

как работает функция compose() в javaScript?

Допустим есть фрагмент когда

236
Оптимизация одной команды

Оптимизация одной команды

Знаю, код так себеКак его оптмизировать? Это моя самая долго обрабатываемая команда

304
Как декларируется state через знак &ldquo;равно&rdquo; в компоненте React?

Как декларируется state через знак “равно” в компоненте React?

Допустим есть компонент Header у которого будет объявлен state:

236
Не могу сравнить ссылки картинок

Не могу сравнить ссылки картинок

Траблит почемуто в этой строчке кода

224