javascript - Hvordan fungerer toLocaleDateString() i Chrome?
Jeg forsto at JavaScript-metoden toLocaleDateString() bruker datamaskinens innstillinger.
La oss ta W3Schools-eksemplet: når jeg endrer dato- og klokkeslettformater på datamaskinen min, blir resultatet forskjellig i Firefox eller IE (som forventet), men Chrome viser fortsatt samme datoformat, hvorfor?
Svar #1
Det ser ut til at Chrome ikke bruker Windows-regioninnstillingene, men sine egne innstillinger i stedet. Disse er tilgjengelige via Innstillinger > Avanserte innstillinger > Språk. Datoformatet er imidlertid ikke eksplisitt definert, det utledes fra valg av språk + land, for eksempel:
- Engelsk (USA) setter datoformat til mm/dd/yyyy
- Engelsk (UK) setter datoformat til dd/mm/yyyy
(For alle som prøver å endre disse, ikke glem - som jeg gjorde - å starte Chrome på nytt for at innstillingene skal tre i kraft)
Tilbake til det opprinnelige spørsmålet, ser det ut til at det var legitimt å bruke toLocaleDateString() så lenge idéen er å presentere informasjonen i et format som den menneskelige brukeren forstår. Men dette ville være en ideell verden, hvor hver bruker har sin nettleser riktig konfigurert. I stedet er Chrome som standard satt til engelsk (USA) så lenge folk lar den være på engelsk, og det krever litt googling (noe de fleste brukere ikke vil gjøre) for å endre disse innstillingene.
Dette gjør det risikabelt å bruke toLocaleDateString() selv når man ikke «stoler på et bestemt format eller sted». Det ser ut til at det eneste «seriøse» alternativet for enhver nettapplikasjon som skal fungere på tvers av nettlesere, er å håndtere egne innstillinger for datoformat (per bruker, selvfølgelig...)
Svar #2
Fra MDN:
"Det eksakte formatet avhenger av plattformen, lokalinnstillingene og brukerens innstillinger."
Og,
"Du bør ikke bruke denne metoden i sammenhenger hvor du er avhengig av et bestemt format eller lokalitet."
Grunnleggende sett er "Hvorfor" fordi det er slik Chrome gjør det. Hvis du trenger et spesifikt format, må du spesifisere det selv.