2010-06-11 16 views
0

J'ai une application (asp.net 3.5) qui supporte 4 langues différentes. Avec d'autres changements culturels, les formats de date doivent correspondre à la culture actuelle sur les pages de rapport.Date dans le format de changement de zone de texte

Nous avons mis les formats de date de chacune des zones de texte comme:

string date = DateTime.Today.ToString("d"); //returns the date portion only 

textbox1.Text = date; 
textbox2.Text = date; 

etc... 

Lorsque l'utilisateur sélectionne l'espagnol ou l'anglais britannique le format doit être jj/mm/aaaa. Cependant, je navigue jusqu'à la page affichée en mm/jj/aaaa. Après une publication, il affiche alors jj/mm/aaaa. Après une autre publication, il passe au format mm/jj/aaaa et ainsi de suite.

J'ai débogué à travers cela et je vois que la culture est correcte pour l'application et les formats de date me sont retournés correctement, mais quand il affiche, il affiche incorrectement.

Est-ce que quelqu'un a déjà vu cela ou sait ce qui se passe?

+0

Vous avez cité le format "jj/mm/aaaa" 4 fois, affirmant que c'est en train de changer ... pourriez-vous vérifier les détails exacts? Il est difficile de diagnostiquer un problème sans les faits :) –

+0

Je pense que vous vouliez taper mm/jj/aaaa quelques fois à la place. –

+0

Désolé ... Je ne sais pas comment j'ai fait ça. Ça devrait être mieux maintenant. J'ai un peu d'avance sur moi-même ... – AWinters

Répondre

0

Si vous changez la culture pour une seule page, vous devez remplacer InitializeCulture pour les pages ASPX dans les questions:

protected override void InitializeCulture() 
{ 
    // set your culture, or pick it from maybe the Request object 
    string selectedLanguage = "en-US"; 
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage); 
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage); 
    base.InitializeCulture(); 
} 

Si vous souhaitez définir la culture pour l'application entière, utilisez Application_BeginRequest dans global.asax.

void Application_BeginRequest(Object sender, EventArgs e) 
{ 
    string selectedLanguage = "en-US"; 
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage); 
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage); 
} 

Vous modifieriez bien sûr en-US la bonne culture pour vos utilisateurs.