Domanda

Quando si visualizzano i miei valori DateTime, voglio che essere formattati in questo modo: "9 feb 2009 07:00"

Sto usando il seguente codice, ma sono preoccupato che la data può visualizzare in modo non corretto in altre culture. Qualcuno può dirmi se questo è il caso o no, e se è come posso risolvere il problema?

Date.ToString("MMMM dd, yyyy hh:mm tt");

Grazie!

È stato utile?

Soluzione

  

Sto usando il seguente codice, ma sono preoccupato che la data può visualizzare in modo non corretto in altre culture.

Che cosa è esattamente ‘corretto’? Sei un normale applicazione client-side? Se è così, si otterrà localizzato nomi dei mesi. È che ‘non corretta’? Dipende da quello che stai cercando.

Se do vogliono volte Locale animali a un'applicazione client-side quindi utilizzando il formato di data di default vi darà i risultati più lisci. Nel mio locale non vorrei vedere 12 ore o il mese prima del giorno, anche se mi piacerebbe sicuramente capito.

Se sei un applicazione lato server non si desidera utilizzare qualsiasi niente default-localizzato, in quanto il locale sarà il server del piuttosto che il vostro utenti, e avrete un problema di portabilità strano. In questo caso dovrete né consente all'utente di scegliere il proprio locale, o utilizzare le proprie funzioni di formattazione data con built-nei nomi dei mesi in inglese.

(o, per evitare il problema, non i nomi dei mesi Nel qual caso ISO-8601. “AAAA-MM-GG HH: MM: SS”. Sarebbe la scelta di default)

Altri suggerimenti

Io preferisco il formato ISO 8601 (e sì, senza la "T"): non c'è bisogno di destreggiarsi tra rappresentazioni diverse a seconda di chi sta leggendo i dati. Meno codice, meno bug.

continuo a trovare documenti originale in inglese che vengono "tradotti", ma con date che rimangono "così come sono" e così diventare completamente sbagliato.

Come bonus aggiuntivo, date formattate ISO sorta proprio come stringhe ordinarie!

Perché non usare semplicemente lungo formato data / ora per l'utente (s)?

il codice

        DateTime now=DateTime.Now;
        foreach(CultureInfo inf in CultureInfo.GetCultures( CultureTypes.InstalledWin32Cultures))
        {
            Console.WriteLine(now.ToString("MMMM dd, yyyy hh:mm tt", inf.DateTimeFormat));
        }

ritorno
Tlhakole 09 2009 04:21
guovvamanu 09 2009 04:21
goevten 09 2009 04:21
veljača 09 2009 04:21
kuovamaanu 09 2009 04:21
Hatun puquy 09 2009 04:21
guovvamanu 09 2009 04:21
ta? lvvmannu 09 2009 04:21
Chwefror 09 2009 04:21
febbraio 09, 2009 4:21
guovvamano 09 2009 04:21
Hui-tanguru 09 2009 04:21
Hatun puquy 09 2009 04:21
febbraio 09, 2009 04:21

Voglio dire, questo viene visualizzato per ogni cultura nel suo codice

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top