2013-04-25 15 views
10

C'è un modo per ottenere il formato di breve data del sistema in JavaScript?JavaScript - Ottieni il formato di data breve del sistema

Ad esempio se la data breve del sistema è in formato americano es. m/g/a o in europeo ad es. d/m/Y

Si prega di notare: Questo non è in dubbio sulla formattazione data o il calcolo è basato sulla geolocalizzazione, ma su come ottenere il formato dalla OS/sistema di

+0

stai chiedendo se o non si può scoprire quale l'utente ha in in basso a destra del loro schermo? O stai chiedendo quale utente * dovrebbe * avere in base alla loro posizione? – George

+0

Io non la penso così –

+0

Ciao F4r-20. Sì, intendevo l'ora del sistema predefinito - anche l'orologio lo usa. – WooDzu

risposta

3

Dopo un pizzico di ricerca ho concluso che tecnicamente non è possibile ottenere le impostazioni regionali e in questo modo il formato della data, ma è possibile fare diverse altre cose. Scegliere una di queste opzioni:
a) Il "toLocaleString()" già citato -e outdated- funzione:

var myDate = new Date(1950, 01, 21, 22, 23, 24, 225); 
var myDateFormat = myDate.toLocaleString(); 
alert (myDateFormat);

PROBLEMI:
1) Non è possibile "myDateFormat.replace" per ottenere la maschera data il mese non viene memorizzato come "01", "02", ecc nella stringa ma come testo, in base alla locale (come "Febbraio" in inglese ma è "Φεβρουάριος" in greco e chissà cosa, ad esempio in Klingon).
2) Comportamento diverso su browser diversi
3) Comportamento diverso su diverse versioni del sistema operativo e del browser ...

b) Utilizzare la funzione toISOString() anziché toLocaleString(). Non si otterrà la maschera della data locale, ma si otterrà una data da cui è possibile determinare la parte della data (cioè dove "mese" o "giorno" si trova in quella stringa). Puoi anche lavorare con le funzioni getUTCDate(), getUTCMonth() e getUTCDay(). Non puoi ancora sapere quale formato di data utilizza il client, ma puoi dire con quale anno/mese/giorno/ecc lavorerai quando prendi una data; usa lo code sopra per testare le funzioni che ho menzionato qui per vedere cosa puoi aspettarti.

c) Leggi Inconsistent behavior of toLocaleString() in different browser articolo e utilizzare la soluzione (IMHO grande) ha descritto ci

+0

Ciao Mark, grazie per la tua risposta. Condivido il tuo punto, ma questo si sta ancora trasmettendo sul browser – WooDzu

+0

Se intendi l'opzione 'c' sì, hai ragione, il problema è segnalato come problema del browser ma la soluzione è più generica.D'altra parte, vorrei andare con la "b" se fossi in te. Se è necessario conoscere la maschera del formato data, c'è un'altra opzione: "myDateFormat.replace (" 1950 "," yyyy ");", ecc. - ma per il mese, devi trovare la stringa start-end e sostituire quell'intervallo con "mm" - il che rende la tua sceneggiatura un po 'troppo complicata, possibile anche per il tuo obiettivo ... –

+0

L'unico problema è che se ad esempio il mio orologio di sistema, il foglio di calcolo Excel e tutta una serie di altre app usano d/m/Y e il mio browser rileverà 'en-US' per qualche ragione (sì lo fa) userà il formato en-US ie m/d/Y – WooDzu

0

Non è possibile. È possibile ottenere la cultura dal browser dell'utente e utilizzare alcune librerie js per convertire in formato data corretto. http://code.google.com/p/datejs/

+0

Si prega di consultare la nota sulla mia domanda – WooDzu

+1

La risposta era no. Non è possibile darti solo alcuni consigli. :) – Reno

-1

Usa Date.CultureInfo.formatPatterns.shortDate

+0

Ciao. Ho appena controllato. Da dove hai preso CultureInfo? L'oggetto Date in Firefox e Chrome non ce l'ha – WooDzu

Problemi correlati