2016-06-30 3 views
0

Я использую Momentjs в нескольких местах приложения, над которым я работаю, и он работает нормально. Однако, я использую endOf('week'), и это происходит в субботу. Я ожидаю воскресенья.Momentjs Locale - Конфигурация дня недели для США

Я пытался найти информацию об этом, но он не стоит нигде, как обойти его без изменения кода везде, где он используется. От моего копания Moment автоматически применяет локали. И, глядя в один из файлов локали, я вижу, где настроен этот день недели (dow).

Пример: Момент/локали/EN-gb.js

week : { 
     dow : 1, // Monday is the first day of the week. 
     doy : 4 // The week that contains Jan 4th is the first week of the year. 
    } 

Так что я понимаю, если бы я был в Великобритании, в конце недели будет воскресенье. Но то, что я не понимаю, это где-то по умолчанию для США? Там нет ан-US.js в каталоге локали и, кажется, по умолчанию dow:0

То, что я пытаюсь определить, является:

  1. Есть ли причина, что нет ан-США?
  2. Является ли мое лучшее решение только для копирования en-gb.js как en-US.js? Если я это сделаю и включу в мое приложение, это повлияет на других в других местах?

Я сделал tinker в moment.min.js и изменил dow от 0 до 1, и это привело к тому, что воскресенья были концом недели во всем приложении. Но я не хочу этого делать.

Надеюсь, это не только я где-то пропускаю ответы.

Любые предложения приветствуются.

спасибо.

Update 1

Использование:

  • momentjs 2.9.0
  • угловой момент 0.10.3
+0

Есть причина, по которой вам нужно использовать 2,9? Я могу опубликовать код для него, но синтаксис 2.12+ имеет больше смысла. –

ответ

2

Неделя система в настоящее время не является простым делом Понимаю. Тем не менее, по умолчанию «en» понимается как «en-us». Если вы хотите обновить день недели до воскресенья, вы можете использовать настройку локали. Убедитесь, что вы используете версию 2.12 или больше, так как это было, когда была введена функция updateLocale. Затем просто запустите:

moment.updateLocale('en', {week : { 
    dow : 1, // Monday is the first day of the week. 
    doy : 4 // The week that contains Jan 4th is the first week of the year. 
}}); 

Это приводит к:

moment().endOf('week').format() 
"2016-07-03T23:59:59-05:00" 

Если вы используете 2.8 до 2.11, синтаксис прост:

moment.locale('en', {week : { 
    dow : 1, // Monday is the first day of the week. 
    doy : 4 // The week that contains Jan 4th is the first week of the year. 
}}); 

Так, не очень разные, но бит неоднозначный.

+0

Спасибо. Это работает. Это будет переопределять локаль для других пользователей?Или это просто изменение dow для пользователей «en»? – Chris

+0

Это просто изменение en –

+0

Я обновил до 2.12 и использовал 'moment.updateLocale', и он работает. Благодарю. – Chris