Как я могу определить, начинается ли неделя в понедельник или воскресенье на основе локали в чистом Javascript? - PullRequest
0 голосов
/ 19 ноября 2018

Ну, название довольно объяснительное - мне нужно выяснить начало недели в местном масштабе - это может быть понедельник, воскресенье, суббота или пятница - в чистом Javascript.

Я нашел это https://stackoverflow.com/a/727536/1226226

<firstDay day="mon" territories="001 AD AI AL AM AN AT AX AZ BA BE BG BM BN BY CH CL CM CR CY CZ DE DK EC EE ES FI FJ FO FR GB GE GF GP GR HR HU IS IT KG KZ LB LI LK LT LU LV MC MD ME MK MN MQ MY NL NO PL PT RE RO RS RU SE SI SK SM TJ TM TR UA UY UZ VA VN XK" />
<firstDay day="fri" territories="BD MV" />
<firstDay day="sat" territories="AE AF BH DJ DZ EG IQ IR JO KW LY MA OM QA SD SY" />
<firstDay day="sun" territories="AG AR AS AU BR BS BT BW BZ CA CN CO DM DO ET GT GU HK HN ID IE IL IN JM JP KE KH KR LA MH MM MO MT MX MZ NI NP NZ PA PE PH PK PR PY SA SG SV TH TN TT TW UM US VE VI WS YE ZA ZW" />
<firstDay day="sun" territories="GB" alt="variant" references="Shorter Oxford Dictionary (5th edition, 2002)" />

найдена совместимая таблица кодов ISO3166 и ISO639 - https://wiki.openstreetmap.org/wiki/Nominatim/Country_Codes

Ответы [ 2 ]

0 голосов
/ 19 июля 2019

без момента.Всегда будет возвращаться в понедельник, если регион не указан в navigator.language.

function weekStart(region) {
  if ('AEAFBHDJDZEGIQIRJOKWLYOMQASDSY'.match(/../g).includes(region)) {
    return 'sat';
  }
  if ('AGARASAUBDBRBSBTBWBZCACNCODMDOETGTGUHKHNIDILINJMJPKEKHKRLAMHMMMOMTMXMZNINPPAPEPHPKPRPTPYSASGSVTHTTTWUMUSVEVIWSYEZAZW'.match(/../g).includes(region)) {
    return 'sun';
  }
  return 'mon';
}

function decodeLocale(locale) {
  return locale.match(/^([a-zA-Z]{2,3})(?:[_-]+([a-zA-Z]{3})(?=$|[_-]+))?(?:[_-]+([a-zA-Z]{4})(?=$|[_-]+))?(?:[_-]+([a-zA-Z]{2}|\d{3})(?=$|[_-]+))?/);
}

console.log(weekStart(decodeLocale(navigator.language)[4]));
0 голосов
/ 19 ноября 2018

вы могли бы использовать moment.js

moment.localeData('en-us').firstDayOfWeek();

Что касается чистого js, вам придется создать свою собственную таблицу поиска.Вы можете использовать исходный код momentjs для справки.https://github.com/moment/moment/tree/develop/locale

В каждом файле локали ищите dow в конце конфигурации.

...