moment.js как распечатать эту неделю в определенном формате - PullRequest
0 голосов
/ 10 июня 2018

Я пытаюсь напечатать текущую неделю с понедельника по воскресенье, используя moment.js как

  • Пн, 4 июня
  • Вт, 5 июня
  • итак что

Я видел, moment().format('ddd, MMM Do') может распечатать нужный формат.И moment().startOf('week').toString() дает правильный первый день недели, но в другом формате.

moment.adḍ̣(1, 'day') может дать следующий день и так далее.

Моя проблема в том, как объединить это для печати всех дней недели, начиная с первого дня.

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Вам не нужно звонить 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>
0 голосов
/ 10 июня 2018

Здесь 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);
...