Fa questo personalizzato DateTime pausa formato in altre culture?
-
22-08-2019 - |
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!
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