Я пытаюсь распечатать текущую неделю с Mon to Sun, используя moment.js as
Я видел moment().format('ddd, MMM Do')
может печатать нужный формат. И moment().startOf('week').toString()
дает правильный первый день недели, но в другом формате.
moment.adḍ̣(1, 'day')
может дать следующий день и так далее.
Моя проблема заключается в том, как объединить это, чтобы печатать все дни недели, начиная с первого дня.
Здесь weekDateStr
будет содержать отформатированную строку для текущей недели
var weekDateStr = [];
var date = moment().startOf('week');
for(var i = 0; i < 7; i++) {
console.log(date.format('ddd, MMM Do'));
weekDateStr.push(date.format('ddd, MMM Do'));
date = date.adḍ̣(1, 'day')
}
console.log(weekDateStr);
Вам не нужно вызывать moment().startOf('week').toString()
вот так. toString()
просто преобразует объект в его строковое представление, но необходимая информация содержится в объекте, полученном путем вызова moment().startOf('week')
.
Если вы хотите использовать указанный формат, вы можете легко изменить его на moment().startOf('week').format('ddd, MMM Do')
. А затем просто добавляйте дни (используя add(i, 'days')
) к этому началу недели в цикле, пока вы не получите 7 дней, каждый раз при вызове .format('ddd, MMM Do')
на заданную дату,
const dateStr = '';
for (let i = 0; i < 7; i++) {
console.log(moment().startOf('week').add(i, 'days').format('ddd, MMM Do'));
}
<script src="https://rawgit.com/moment/moment/2.2.1/min/moment.min.js"></script>
И если вам это нужно как строка.
const date = Array.from({length: 7}, () => 0)
.map((v, i) => moment().startOf('week').add(i, 'day').format('ddd, MMM Do'))
.join('; ');
console.log(date);
<script src="https://rawgit.com/moment/moment/2.2.1/min/moment.min.js"></script>