2015-01-21 5 views
1

я использую Node.js с момента 2.9.0Неверные недели в momentjs

var moment = require("moment"); 
var d = moment.utc([2014, 11, 27]); 
var iso = d.toISOString(); 
var week = d.week(); 

показывает изо = "2014-12-27T00: 00: 00.000Z" и неделя 52.

Но если var d = moment.utc([2014, 11, 28]);

изо является 2014-12-28T00: 00: 00.000Z

неделя 1. Почему?

спасибо.

ответ

4

Ответа можно найти in the docs:

Недели года меняется в зависимости от какого дня это первый день недели (воскресенье, понедельник и т.д.), и который неделей первой недели года.

Например, в Соединенных Штатах воскресенье - первый день недели. Неделя с 1 января в ней - первая неделя года.

Итак, неделя # 1 2015 (с помощью этой функции) является:

  • 2014-12-28 (воскресенье)
  • 2014-12-29 (понедельник)
  • 2014- 12-30 (вторник)
  • 2014-12-31 (среда)
  • 2015-01-01 (четверг)
  • 2015-01-02 (пятница)
  • 2015-01-03 (суббота)

Стоит также отметить, что момент также имеет функцию isoWeek, которая соответствует к ISO 8601 week numbering system.

+0

var d = moment.utc ([2014, 11, 28]). IsoWeek(); -> 52 и var d = moment.utc ([2014, 11, 29]). IsoWeek(); -> 1 isoWeek работает неправильно? – Ilya

+0

Оба они работают правильно. ИСО начинается в понедельник, как описано в третьем абзаце статьи [Wikipedia] (http://en.wikipedia.org/wiki/ISO_week_date). Я думаю, возможно, вы просто смущены тем фактом, что первая неделя года может начаться в предыдущем году. –

+0

Привет @MattJohnson! Я хочу начать неделю с четверга из-за моего требования к проекту. Есть ли способ начать неделю с четверга? так что первая дата недели № 1 может быть 2017-01-05? – user2899728

Смежные вопросы