Galīgais veids, kā formatēt datumus starptautiskajām vietnēm
Datuma formāti atšķiras atkarībā no reģiona un valodas, tāpēc vienmēr ir noderīgi, ja mēs varam atrast veidu, kā lietotājiem norādīt datumus, kas raksturīgi viņu valodai un reģionam.
2012. gada decembrī ECMA izlaida Starptautiskās API API specifikācijas. Internacionalizācijas API palīdz mums attēlot noteiktus datus atbilstoši valodas un izgriezuma specifikācijai. To var izmantot identificēt valūtas, laika zonas un vēl.
Šajā amatā mēs izskatīsim datuma formatēšana izmantojot šo API.
Ziniet lietotāja lokalizāciju
Lai parādītu datumu, kāds ir katrai lietotāja vēlamajai vietai, vispirms mums ir jāzina, kas ir vēlamā atrašanās vieta. Pašlaik drošs veids, kā uzzināt, ir uzdot lietotājam; ļauj lietotājiem tīmekļa lapā atlasīt vēlamos valodas un reģiona iestatījumus.
Bet, ja tas nav risinājums, varat to interpretēt Pieņemt valodu
pieprasiet galveni vai lasiet navigator.language
(Chrome un Firefox) vai navigator.browserLanguage
(IE) vērtībām.
Lūdzu, ziniet, ka ne visas no šīm opcijām atgriež pārlūkprogrammas lietotāja interfeisa vēlamo valodu.
var language_tag = window.navigator.browserLanguage || window.navigator.language || "en"; // atgriež valodas tagus, piemēram, 'en-GB'
Pārbaudiet internacionalizācijas API
Lai uzzinātu, vai pārlūkprogramma atbalsta internacionalizācijas API vai nē, mēs varam pārbaudīt globālā objekta esamību Intl
.
ja (window.hasOwnPropertyâ €)‹("Intl") & & Typeof Intl === "objekts") // Internacionalizācijas API ir klāt, ļaujiet mums to izmantot
The Intl objektu
Intl
ir globāls objekts, lai izmantotu internacionalizācijas API. Tam ir trīs īpašības, kas ir trīs objektu konstruktori, proti, Collator
, NumberFormat
, un DateTimeFormat
.
Objekts, kuru mēs izmantosim, ir DateTimeFormat
kas palīdzēs mums formatēt datuma laiku kā dažādās valodās.
The DateTimeFormat objektu
The DateTimeFormat
konstruktors pieņem divus izvēles argumentus;
atrašanās vietas
- virkne vai virkne virkņu, kas attēlo, piemēram, valodas tagus; “de” vācu valodā, “en-GB” angļu valodā, ko lieto Apvienotajā Karalistē. Ja valodas atzīme nav minēta, noklusējuma lokalizācija būs runtime.iespējas
- objekts, kura rekvizīti tiek izmantoti, lai pielāgotu formatēšanas ierīci. Tam ir šādas īpašības:
Īpašums | Apraksts | Iespējamās vērtības |
dienā | Mēneša diena | “2 ciparu”, “ciparu” |
laikmetā | Era datums iekrīt, piem., BC | “Šaurs”, “īss”, “ilgi” |
formatMatcher | Formāta saskaņošanai izmantotais algoritms | “pamata”, “vislabāk piemērots”[Noklusējums] |
stunda | Pārstāv stundas | “2 ciparu”, “ciparu” |
stunda12 | Norāda 12 stundu formātu (taisnība ) vai 24 stundu formātā (nepatiesa ) | taisnība , nepatiesa |
localeMatcher | Algoritms, ko izmanto lokalizācijas saskaņošanai | “uzmeklēšana”, “vislabāk piemērots”[Noklusējums] |
minūte | Minūtes laikā | “2 ciparu”, “ciparu” |
mēnesī | Mēnesis gadā | “2 ciparu”, “ciparu”, “Šaurs”, “īss”, “ilgi” |
otrā | Sekundes laikā | “2 ciparu”, “ciparu” |
laika zona | Piemērojiet laika joslu | “UTC”, noklusējums ir izpildlaika laika josla |
timeZoneName | Datuma laika josla | “īss”, “ilgi” |
darba diena | Diena nedēļā | “Šaurs”, “īss”, “ilgi” |
gadā | Datuma datums | “2 ciparu”, “ciparu” |
Piemērs:
var formatter = jauns Intl.DateTimeFormat ('en-GB'); / * atgriež formātu, kas var formatēt datumu Apvienotajā Karalistē Angļu datuma formāts * /
var options = weekday: 'short'; var formatter = jauns Intl.DateTimeFormat ('en-GB', opcijas); / * atgriež formatēšanas formātu, kas var formatēt datumu Apvienotās Karalistes angļu valodas datuma formātā * kopā ar darba dienu ar īsu apzīmējumu, piemēram, “Thu” ceturtdien * /
The formātā funkciju
Par DateTimeFormat
objektam ir īpašnieka piekļuves rīks (getter) formātā
kas atgriež funkciju, kas formatē a Datums
pamatojoties uz atrašanās vietas
un iespējas
atrasts DateTimeFormat
piemēram.
Funkcija ņem a Datums
objektu vai nenoteikts
kā izvēles arguments un atgriež a virkne
pieprasītajā datuma formātā.
Piezīme: Ja arguments ir arī nenoteikts
vai ne, tad tas atgriež vērtību Date.now ()
pieprasītajā datuma formātā.
Šeit ir sintakse:
jauns Intl.DateTimeFormat (). formāts () // atgriezīs pašreizējo datumu izpildīšanas datuma formātā
Un tagad ļaujiet mums kodēt vienkāršu datuma formatējumu.
Mainīsim valodu un redzēsim izeju.
Tagad ir pienācis laiks izpētīt iespējas.
The toLocaleDateString metodi
Tā vietā, lai izmantotu iepriekšminētajos piemēros parādīto formātu, varat izmantot arī Date.prototype.toLocaleString
tādā pašā veidā ar atrašanās vietas
un iespējas
argumenti, tie ir līdzīgi, bet ieteicams to izmantot DateTimeFormat
objekts, kad lietojat pārāk daudz datumu savā pieteikumā.
var mydate = jauns datums (“2015/04/22”); var options = weekday: "short", gads: "ciparu", mēnesis: "long", diena: "ciparu"; console.log (mydate.toLocaleDateString ('en-GB', opcijas)); // atgriežas "Wed, 2015. gada 22. aprīlī"
Pārbaudiet, vai atrašanās vietas tiek atbalstīti
Lai pārbaudītu atbalstīto atrašanās vietas
, mēs varam izmantot šo metodi atbalstītsLocalesOf
no DateTimeFormat
objektu. Tas atdod visu atbalstošo lokalizāciju vai tukšu masīvu, ja neviens no lokāliem netiek atbalstīts.
Testēšanai pievienojiet manekenu lokāli “blah” pārbaudāmo lokalizāciju sarakstā.
console.log (Intl.DateTimeFormat.supportedLocalesOf (["zh", "blah", "fa-pes"])); // atgriež Array ["zh", "fa-pes"]
Pārlūka atbalsts
2015. gada aprīļa beigās galvenās pārlūkprogrammas atbalsta internacionalizācijas API.
Atsauces
- ECMA International: ECMAScript internacionalizācijas API specifikācija
- IANA: Valodas subtag reģistrs
- Norbert's Corner: ECMAScript internacionalizācijas API