Mājas lapa » Kodēšana » Galīgais veids, kā formatēt datumus starptautiskajām vietnēm

    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