Pagrindinis » Kodavimas » Galutinis būdas formatuoti tarptautinių svetainių datas

    Galutinis būdas formatuoti tarptautinių svetainių datas

    Datos formatai skiriasi priklausomai nuo regiono ir kalbos, todėl visada naudinga, jei galime rasti būdą, kaip parodyti datas vartotojams, būdingus jų kalbai ir regionui.

    2012 m. Gruodžio mėn. ECMA išleido „Internationalization API“ „JavaScript“ specifikacijas. Internacionalizavimo API padeda mums parodyti tam tikrus duomenis pagal kalbos ir iškraipymo specifikacijas. Jis gali būti naudojamas nustatyti valiutas, laiko zonas ir dar.

    Šiame pranešime mes ieškosime datos formatavimas naudojant šią API.

    Žinokite vartotojo lokalę

    Jei norite parodyti datą, kaip naudotojo pageidaujamą lokalę, pirmiausia turime žinoti, kas yra pageidaujama vietovė. Šiuo metu kvailas būdas žinoti, kad reikia paklausti vartotojo; leiskite naudotojams pasirinkti pageidaujamus kalbos ir regiono nustatymus tinklalapyje.

    Tačiau, jei tai nėra galimybė, galite interpretuoti Priimti kalbą prašyti antraštės arba skaityti navigator.language(„Chrome“ ir „Firefox“) arba navigator.browserLanguage(IE) reikšmėms.

    Prašome žinoti, kad ne visos šios parinktys grąžina pageidaujamą naršyklės vartotojo sąsajos kalbą.

     var language_tag = window.navigator.browserLanguage || window.navigator.language || "en"; // grąžina kalbos žymas, pvz., „en-GB“ 

    Patikrinkite internacionalizavimo API

    Norėdami sužinoti, ar naršyklė palaiko internacionalizavimo API, ar ne, galime patikrinti, ar yra pasaulinio objekto Intl.

     jei (window.hasOwnPropertyâ €)‹(„Intl“) & & typeof Intl === „objektas“) // Yra internacionalizavimo API, naudokime, kad 

    The Intl objektą

    Intl yra pasaulinis objektas, skirtas naudoti internacionalizavimo API. Ji turi tris savybes, kurios yra trijų objektų konstruktoriai Kolektorius, NumberFormat, ir DateTimeFormat.

    Objektas, kurį naudosime, yra DateTimeFormat kuri padės mums formuoti datos laiką, kaip ir skirtingomis kalbomis.

    The DateTimeFormat objektą

    The DateTimeFormat konstruktorius priima du neprivalomus argumentus;

    • vietovės - eilutės arba eilutės, kurios žymi, pavyzdžiui, kalbos žymes; “de” vokiečių kalba, “lt-GB” anglų kalba, naudojama Jungtinėje Karalystėje. Jei kalbos žyma nenurodyta, numatytoji vietovė bus vykdymo trukmė.
    • galimybės - objektas, kurio ypatybės naudojamos formatavimui pritaikyti. Ji turi šias savybes:
    Nuosavybė apibūdinimas Galimos vertės
    dieną Mėnesio diena “2 skaitmenų”, “skaitmeninis”
    eros Era data patenka į: Ex: BC “siauras”, “trumpas”, “ilgai”
    formatMatcher Formatu atitikimo algoritmas “paprastas”, “geriausiai tinkantis”[Numatytas]
    valandą Atstovauja valandas “2 skaitmenų”, “skaitmeninis”
    valandą12 Rodo 12 valandų formatą (tiesa) arba 24 valandų formatą (klaidinga) tiesa, klaidinga
    localeMatcher Vietos atitikimo algoritmas “paieškos”, “geriausiai tinkantis”[Numatytas]
    minutė Protokolo laikas “2 skaitmenų”, “skaitmeninis”
    mėnesį Mėnuo per metus “2 skaitmenų”, “skaitmeninis”, “siauras”, “trumpas”, “ilgai”
    antra Sekundės tuo metu “2 skaitmenų”, “skaitmeninis”
    laiko zona Taikoma laiko juosta “UTC”, numatytasis laikas yra vykdymo laiko zona
    timeZoneName Datos laiko juosta “trumpas”, “ilgai”
    savaitės diena Diena savaitę “siauras”, “trumpas”, “ilgai”
    metus Datos metai “2 skaitmenų”, “skaitmeninis”

    Pavyzdys:

     var formatter = new Intl.DateTimeFormat ('en-GB'); / * grąžina formatuotoją, kuris gali formatuoti datą JK anglų kalba 
     var options = weekday: 'short'; var formatter = new Intl.DateTimeFormat („en-GB“, parinktys); / * grąžina formatavimo priemonę, kuri gali formatuoti datą JK anglų kalbos datos formatu * kartu su savaitės diena trumpu ženklu kaip „Thu“ ketvirtadienį * / 

    The formatą funkcija

    . \ T DateTimeFormat objektas turi nuosavybės prieigą (getter) formatą kuri grąžina funkciją, kuri formatuoja a Data remiantis vietovės ir galimybės rasti DateTimeFormat instancija.

    Funkcija užima a Data objektas arba neapibrėžtas kaip neprivalomas argumentas ir grąžina a eilutė pageidaujamą datos formatą.

    Pastaba: Jei argumentas taip pat yra neapibrėžtas arba nepateikta, tada ji grąžina vertę Date.now () pageidaujamą datos formatą.

    Čia yra sintaksė:

     naujas Intl.DateTimeFormat (). formatas () // grąžins dabartinę datą vykdymo datos formatu 

    Ir dabar leiskite mums koduoti paprastą datos formatavimą.

    Pakeiskime kalbą ir matysime išėjimą.

    Dabar atėjo laikas ieškoti galimybių.

    The toLocaleDateString metodas

    Vietoj to, kad naudojate formatavimo formą, kaip parodyta aukščiau pateiktuose pavyzdžiuose, galite naudoti Date.prototype.toLocaleString taip pat su vietovės ir galimybės argumentai, jie yra panašūs, tačiau rekomenduojama naudoti DateTimeFormat objektas, kai susiduriate su pernelyg daug datų paraiškoje.

     var mydate = new Date („2015/04/22“); var options = weekday: "short", metai: "skaitmeninis", mėnuo: "long", diena: "skaitmeninis"; console.log (mydate.toLocaleDateString („en-GB“, parinktys)); // grįžta į „Penk, 2015 m. balandžio 22 d.“ 

    Patikrinkite, ar vietovės yra palaikomi

    Norėdami patikrinti palaikomą vietovės, mes galime naudoti šį metodą palaikomaLocalesOf apie DateTimeFormat objektą. Ji grąžina visų palaikančių lokalių masyvą arba tuščią matricą, jei nė viena iš vietinių vietų nepalaikoma.

    Bandymui pridėkite manekeno lokalę “blah” tikrinamų vietovių sąraše.

     console.log (Intl.DateTimeFormat.supportedLocalesOf (["zh", "blah", "fa-pes"])); // grąžina Array ["zh", "fa-pes"] 

    Naršyklės palaikymas

    2015 m. Balandžio mėn. Pabaigoje pagrindinės naršyklės palaiko internacionalizavimo API.

    Nuorodos

    • ECMA Tarptautinė: ECMAScript internacionalizavimo API specifikacija
    • IANA: Kalbos subtag registras
    • „Norbert's Corner“: „ECMAScript“ internacionalizavimo API