Ось спосіб це зробити, скориставшись способом додавання одного дня, при необхідності переноситься дата на наступний місяць і не псується з мілісекундами. Економія літнього часу також не є проблемою.
var now = new Date();
var daysOfYear = [];
for (var d = new Date(2012, 0, 1); d <= now; d.setDate(d.getDate() + 1)) {
daysOfYear.push(new Date(d));
}
Зауважте, що якщо ви хочете зберегти дату, вам потрібно буде створити нову (як вище з new Date(d)
), інакше ви закінчите, щоб кожна збережена дата була остаточним значенням d
циклу.