Ricerca nel sito web

javascript - Come funziona toLocaleDateString() in Chrome?


Ho capito che il metodo JavaScript toLocaleDateString() utilizzava le impostazioni del computer.

Prendiamo l'esempio di W3Schools: quando cambio i formati di data e ora del mio computer, il risultato è diverso in Firefox o IE (come previsto), ma Chrome mostra ancora lo stesso formato di data, perché?

Risposta n. 1

Sembra che Chrome non utilizzi le impostazioni regionali di Windows, ma le proprie impostazioni. Queste sono disponibili tramite Impostazioni > Impostazioni avanzate > Lingua. Tuttavia, il formato della data non è definito esplicitamente, viene dedotto dalla scelta di lingua + paese, ad esempio:

  • L'inglese (USA) imposta il formato della data su mm/gg/aaaa
  • L'inglese (Regno Unito) imposta il formato della data su gg/mm/aaaa

(Per chiunque cerchi di cambiare questi, non dimenticate - come ho fatto io - di riavviare Chrome affinché le impostazioni abbiano effetto)

Tornando alla domanda originale, sembra legittimo usare toLocaleDateString() finché l'idea è quella di presentare le informazioni in un formato comprensibile per l'utente umano. Ma questo sarebbe un mondo ideale, dove ogni utente ha il proprio browser configurato correttamente. Invece, Chrome è impostato per default in inglese (US) finché le persone lo lasciano in inglese, e ci vuole un po' di ricerca su Google (cosa che la maggior parte degli utenti non farà) per cambiare queste impostazioni.

Questo rende rischioso usare toLocaleDateString() anche quando non si "fa affidamento a un formato o a una localizzazione particolare". Sembra che l'unica opzione "seria" per qualsiasi applicazione web cross-browser sia gestire le proprie preferenze di formato della data (per utente, naturalmente...)

Risposta n. 2

Dall'MDN:

«Il formato esatto dipende dalla piattaforma, dalla località e dalle impostazioni dell'utente.»

E,

"Non dovresti usare questo metodo in contesti in cui fai affidamento su un formato o una localizzazione particolare."

Fondamentalmente, "Perché" è perché è così che lo fa Chrome. Se hai bisogno di un formato specifico, dovrai specificarlo tu stesso.