2010-03-25 7 views

risposta

1

Sorprendentemente ho avuto una risposta molto semplice. Durante l'impostazione di Cultura e UICulture, tutto ciò che devo fare è impostare la Proprietà della Cultura per sempre. Questo risulterà nel mostrare sempre il formato della data in inglese.

2

sulla corda, quando si visualizza la data, effettuare le seguenti operazioni:

CultureInfo ci = new CultureInfo("en-US"); 
string s = dateTimeObject.ToString(ci); 

Questo è un esempio semplificato tuttavia, è solo bisogno di fare il lavoro necessario che si vuole fare sull'oggetto DateTime.

+0

Se lo faccio in questo modo dovrò cambiare il codice ovunque. Non può essere fatto a livello globale? –

+0

@Nadeem: è possibile creare il proprio CultureInfo. Vedi la mia risposta aggiornata. – bernhof

9

Per modificare la modalità di formattazione delle date è possibile create a custom CultureInfo, in base a un CultureInfo esistente (nel tuo caso "fr-CA"), modificando solo i formati di data. Non ho alcuna esperienza in questo, ma l'aricle collegato e this article spiega come è fatto. Presumibilmente, non è troppo difficile.

Immagino che l'impostazione di System.Threading.Thread.CurrentThread.CurrentCulture in un'istanza del tuo CultureInfo personalizzato (ad esempio nell'evento PageLoad) debba svolgere il lavoro.


Oppure, utilizzare la classe CultureInfo per specificare la cultura su una base per-stringa:

CultureInfo culture = new CultureInfo("en-US"); 

Ogni volta che si scrive una data alla pagina, utilizzare la seguente sintassi:

myDate.ToString("d", culture); 

o

string.Format(
    culture, 
    "This is a string containing a date: {0:d}", 
    myDate); 

Th La classe e CultureInfo risiede nello spazio dei nomi System.Globalization e d in quanto sopra è il formato in cui viene stampata la data. See John Sheehan's ".NET Format String Quick Reference" cheat sheet per ulteriori informazioni sulle stringhe di formato.

2

Grazie Ragazzi !!!! Sembra che i tuoi suggerimenti funzionino per me. Ho provato a creare una cultura personalizzata che estende le funzionalità di fr-ca e cambia il formato della data in en-us. Ecco il codice

CultureInfo ci = new CultureInfo("fr-ca"); 
DateTimeFormatInfo dateformat = new DateTimeFormatInfo(); 
dateformat.FullDateTimePattern = "dddd, mmmm dd, yyyy h:mm:ss tt";// Date format of en-us 
ci.DateTimeFormat = dateformat; 
CultureAndRegionInfoBuilder obj = new CultureAndRegionInfoBuilder("fr-ca", CultureAndRegionModifiers.Replacement); 
obj.LoadDataFromCultureInfo(ci); 
obj.Register(); 

Una volta che il codice registra nuova FR-ca, il formato della data del fr-ca sarà uguale a quello della it-it. Il codice può essere utilizzato in Page_Load.

1

Ecco il codice di cui sopra nel pezzo di codice presentato:

CultureInfo ci = new CultureInfo("fr-ca"); 

DateTimeFormatInfo dateformat = new DateTimeFormatInfo(); 



dateformat.FullDateTimePattern = "dddd, mmmm dd, yyyy h:mm:ss tt";// Date format of en-us 



ci.DateTimeFormat = dateformat; 

CultureAndRegionInfoBuilder obj = new CultureAndRegionInfoBuilder("fr-ca", CultureAndRegionModifiers.Replacement); 


obj.LoadDataFromCultureInfo(ci); 

obj.Register(); 
2

Nel mio caso è quello che ho fatto. Ho dovuto impostare la lingua dell'app, determinare anche se la lingua è da destra a sinistra, ma anche necessario per mantenere il formato datetime standard. Così è stato quello che ho fatto:

string culture = "ar-SA"; 
//Set language and culture to Arabic 
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture); 
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(culture); 

//But independent of language, keep datetime format same 
DateTimeFormatInfo englishDateTimeFormat = new CultureInfo("en-CA").DateTimeFormat; 
Thread.CurrentThread.CurrentCulture.DateTimeFormat = englishDateTimeFormat; 
+0

grazie mille, mi hai salvato la giornata. Ad ogni modo, ho modificato la tua risposta per reimpostare anche il formato datetime nella UI Culture. Buona giornata! –

+0

Ottimo! Diamo il benvenuto :) – Elnoor

+0

La migliore soluzione, funziona per me – amal50

Problemi correlati