Moment: isoWeekday (String) несовместимо с isoWeekday (Number) в воскресенье

Созданный на 28 окт. 2015  ·  6Комментарии  ·  Источник: moment/moment

isoWeekday (7) дает мне воскресенье этой недели iso (понедельник-воскресенье)
isoWeekday («Воскресенье») дает мне воскресенье предыдущей недели iso.

screen shot 2015-10-28 at 07 53 49

версия: https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js

Bug Documentation Up-For-Grabs

Самый полезный комментарий

Я подумал, как это реализовано, и понимаю, что вы имеете в виду сейчас, но результат был немного противоречивым с моей точки зрения. В документации сказано:

_ Получает или задает день недели в формате ISO, где 1 - понедельник, а 7 - воскресенье.
moment().isoWeekday(1); // Monday
moment().isoWeekday(7); // Sunday

Итак, на неделе ISO 7 всегда означает воскресенье. В документации псевдонима говорится:

_ Начиная с версии 2.1.0, также поддерживается название дня недели. Это анализируется в текущей локали ._
moment().day("Sunday");

Так что с этими двумя частями информации это может немного сбить с толку, когда вы это сделаете:

moment().isoWeekday("Sunday")

Я ожидал, что это даст тот же результат, что и moment().isoWeekday(7) .

Кроме того, если вы скажете, что «Воскресенье» является псевдонимом для 0, это может противоречить документации здесь:

_Если в региональных настройках понедельник назначен первым днем ​​недели, moment().weekday(0) будет понедельником. Если воскресенье - первый день недели, moment().weekday(0) будет воскресеньем._

Не пытаюсь хвастаться, просто хочу объяснить, почему мне это было непонятно. Возможно, было бы полезно сделать примечание в документации, в котором говорится, что «воскресенье» является псевдонимом для 0.

Все 6 Комментарий

Это правильно. Это воскресенье isoWeekday(0) а "воскресенье" - это псевдоним для 0, а не 7.

Я подумал, как это реализовано, и понимаю, что вы имеете в виду сейчас, но результат был немного противоречивым с моей точки зрения. В документации сказано:

_ Получает или задает день недели в формате ISO, где 1 - понедельник, а 7 - воскресенье.
moment().isoWeekday(1); // Monday
moment().isoWeekday(7); // Sunday

Итак, на неделе ISO 7 всегда означает воскресенье. В документации псевдонима говорится:

_ Начиная с версии 2.1.0, также поддерживается название дня недели. Это анализируется в текущей локали ._
moment().day("Sunday");

Так что с этими двумя частями информации это может немного сбить с толку, когда вы это сделаете:

moment().isoWeekday("Sunday")

Я ожидал, что это даст тот же результат, что и moment().isoWeekday(7) .

Кроме того, если вы скажете, что «Воскресенье» является псевдонимом для 0, это может противоречить документации здесь:

_Если в региональных настройках понедельник назначен первым днем ​​недели, moment().weekday(0) будет понедельником. Если воскресенье - первый день недели, moment().weekday(0) будет воскресеньем._

Не пытаюсь хвастаться, просто хочу объяснить, почему мне это было непонятно. Возможно, было бы полезно сделать примечание в документации, в котором говорится, что «воскресенье» является псевдонимом для 0.

Честная оценка. Возможно, это должен быть псевдоним для 7 или что 0 vs 7 должны вести себя по-другому. Я недостаточно погружен в детали, чтобы быть уверенным, что делать правильно, поэтому я просто оставлю это открытым.

Взглянем на это еще раз. В документации говорится только о возможности передать "Sunday" отношении функции day , а не weekday или isoWeekday . Вероятно, их следует обновить.

Тогда я согласен, что для isoWeekday псевдоним "Sunday" должен быть изменен так, чтобы он соответствовал 7 , а не 0 . То, что он в настоящее время соответствует 0 является ошибкой, поскольку в этом весь смысл функции isoWeekday .

Приветствуется пиар. Сначала отправьте PR, чтобы исправить поведение функции isoWeekday . Затем отправьте отдельный PR на https://github.com/moment/momentjs.com с изменением документации.

Я пытаюсь создать дату с помощью номера года, недели и дня, т.е. let date = moment().year(2019).isoWeek(1).isoWeekday(1).toDate(); //Mon Dec 31 2018 11:56:45 GMT+0100 (Central European Standard Time)

проблема, с которой я сталкиваюсь, когда хочу получить год и неделю от сгенерированной даты moment(date).year() | moment(date).isoWeek() Я ошибся. НЕ УВЕРЕНЫ, КАК ЭТО РЕШИТЬ

Была ли эта страница полезной?
0 / 5 - 0 рейтинги