Дефинитиван начин форматирања датума за међународне локације
Формати датума се разликују у зависности од региона и језика, тако да је увек корисно ако пронађемо начин да прикажемо датуме корисницима, специфичне за њихов језик и регион..
У децембру 2012, ЕЦМА је објавила спецификације АПИ-ја интернационализације за ЈаваСцрипт. АПИ за интернационализацију помаже нам да прикажемо одређене податке у складу са језиком и спецификацијама. Може се користити идентификујте валуте, временске зоне и још.
У овом посту ћемо истраживати форматирање датума користећи овај АПИ.
Упознајте локализацију корисника
Да бисте приказали датум према жељеној локализацији корисника, прво морамо знати шта је та преферирана локација. Тренутно сигуран начин да сазнате да је то питати корисника; дозволите корисницима да изаберу жељене поставке језика и региона на веб страници.
Али, ако то није опција, можете интерпретирати Прихватите језик
захтевајте заглавље или прочитајте навигатор.лангуаге
(за Цхроме и Фирефок) или навигатор.бровсерЛангуаге
(за ИЕ) вредности.
Имајте на уму да све те опције не враћају жељени језик корисничког интерфејса претраживача.
вар лангуаге_таг = виндов.навигатор.бровсерЛангуаге || виндов.навигатор.лангуаге || "ен"; // враћа ознаке језика као "ен-ГБ"
Проверите АПИ за интернационализацију
Да бисмо знали да ли претраживач подржава АПИ интернационализације или не, можемо проверити да ли постоји глобални објекат Интл
.
ако (виндов.хасОвнПроперти‹("Интл") && типеоф Интл === "објецт") // Присутан је АПИ за интернационализацију
Тхе Интл објекат
Интл
је глобални објект за употребу АПИ-ја за интернационализацију. Има три својства која су конструктори за три објекта, наиме Цоллатор
, НумберФормат
, и ДатеТимеФормат
.
Предмет који ћемо користити је ДатеТимеФормат
који ће нам помоћи да форматирамо време у складу са различитим језицима.
Тхе ДатеТимеФормат објекат
Тхе ДатеТимеФормат
конструктор узима два опционална аргумента;
лоцалес
- низ или низ стрингова који представљају језичке ознаке, на пример; “де” за немачки језик, “ен-ГБ” за енглески језик који се користи у Уједињеном Краљевству. Ако се не спомиње језичка ознака, подразумевана локализација ће бити она коју је извршио.Опције
- објекат чија се својства користе за прилагођавање форматера. Поседује следећа својства:
Својство | Опис | Могуће вредности |
дан | Дан у месецу | “2-знаменкасти”, “нумериц” |
ера | Ера датум пада, нпр: БЦ | “узак”, “кратак”, “лонг” |
форматМатцхер | Алгоритам који се користи за подударање формата | “басиц”, “бест фит”[Уобичајено] |
сат | Представља Сати у времену | “2-знаменкасти”, “нумериц” |
хоур12 | Означава 12-часовни формат (истина ) или 24-часовни формат (фалсе ) | истина , фалсе |
лоцалеМатцхер | Алгоритам који се користи за подударање локација | “потражити”, “бест фит”[Уобичајено] |
минуте | Минуте у времену | “2-знаменкасти”, “нумериц” |
месец дана | Месец у години | “2-знаменкасти”, “нумериц”, “узак”, “кратак”, “лонг” |
други | Секунде у времену | “2-знаменкасти”, “нумериц” |
Временска зона | Временска зона за примјену | “УТЦ”, подразумевана је временска зона времена извршавања |
тимеЗонеНаме | Временска зона датума | “кратак”, “лонг” |
веекдаи | Дан у недељи | “узак”, “кратак”, “лонг” |
године | Година датума | “2-знаменкасти”, “нумериц” |
Пример:
вар форматтер = нев Интл.ДатеТимеФормат ('ен-ГБ'); / * враћа формат који може форматирати датум у формату датума енглеског језика * /
вар оптионс = веекдаи: 'схорт'; вар форматтер = нев Интл.ДатеТимеФормат ('ен-ГБ', опције); / * враћа форматтер који може форматирати датум у енглеском формату датума * заједно са даном у недељи у краткој нотацији као 'Тху' за четвртак * /
Тхе формат функције
Примерка ДатеТимеФормат
објекат има својство аццессор (геттер) формат
која враћа функцију која форматира а Датум
базира на лоцалес
и Опције
пронађено у ДатеТимеФормат
пример.
Функција узима а Датум
објекта или недефинисан
као опционални аргумент и враћа а низ
у жељеном формату датума.
Белешка: Ако је и аргумент недефинисан
или не, онда се враћа вредност Дате.нов ()
у жељеном формату датума.
Ево синтаксе:
нев Интл.ДатеТимеФормат (). формат () // ће вратити тренутни датум у формату датума извођења
И сада дозволите да кодирамо једноставно форматирање датума.
Хајде да промијенимо језик и видимо излаз.
Сада је време да погледамо опције.
Тхе тоЛоцалеДатеСтринг метода
Уместо употребе форматера као што је приказано у претходним примерима, такође можете користити Дате.прототипе.тоЛоцалеСтринг
на исти начин са лоцалес
и Опције
аргументи, они су слични, али се препоручује да се користи ДатеТимеФормат
објект када се бавите са превише датума у вашој апликацији.
вар мидате = нови датум ('2015/04/22'); вар оптионс = веекдаи: "схорт", иеар: "нумериц", монтх: "лонг", даи: "нумериц"; цонсоле.лог (мидате.тоЛоцалеДатеСтринг ('ен-ГБ', опције)); // враћа се "Вед, 22 Април 2015"
Тестирајте ако лоцалес су подржани
Да бисте проверили подржане лоцалес
, можемо користити методу суппортедЛоцалесОф
оф ДатеТимеФормат
објекат. Она враћа низ свих подржаних локација или празан низ ако није подржан ниједан од локалитета.
За тестирање, додајте лажну локализацију “блах” у листи локализације коју желите да проверите.
цонсоле.лог (Интл.ДатеТимеФормат.суппортедЛоцалесОф (["зх", "блах", "фа-пес"])); // враћа Арраи ["зх", "фа-пес"]
Бровсер Суппорт
Крајем априла 2015. главни претраживачи подржавају АПИ за интернационализацију.
Референце
- ЕЦМА Интернатионал: Спецификација АПИ-ја ЕЦМАСцрипт Интернатионализатион
- ИАНА: Регистар језика Субтаг
- Норберт'с Цорнер: ЕЦМАСцрипт Интернатионализатион АПИ