2009-08-04 7 views
2

J'ai un textbox asp.net pour la saisie de la date, j'utilise l'expression régulière pour laisser l'utilisateur entrer la date au format jj-mm-aaaa mais quand je convertis la date d'entrée dans l'objet datetime, le mois et le jour les valeurs sont interchangées. Comment peut-on spécifier la bonne façon d'interpréter cette date d'entrée?Spécification du format d'entrée de date

+0

Comment convertissez-vous en DateTime? –

+0

J'utilise DateTime fromDate = Convert.ToDateTime (this.txtFromDate.Text); – Blerta

Répondre

1

Vous pouvez utiliser DateTime.ParseExact

+0

J'ai utilisé DateTime.ParseExact (this.txtFromDate.Text, "jj-MM-aaaa", CultureInfo.CultureInvariant) soyez prudent avec MM majuscule, car il est important :-) Merci – Blerta

1

Vous pouvez accomplir cela en spécifiant une culture qui utilise le format dd-mm-aaaa comme l'Allemagne:

DateTime dateTime = DateTime.Parse("01-12-2009", CultureInfo.GetCultureInfo("de-DE")); 
Console.WriteLine(dateTime.ToString("dd MMM yyyy")); 

produit:

01 Dec 2009 

Bien sûr, vous voulez vraiment faire tous votre traitement spécifique à la culture dans la culture de votre utilisateur. Donc, CultureInfo.GetCultureInfo("de-DE") devrait être CultureInfo.CurrentCulture.

Et si votre utilisateur n'est pas habitué à voir des dates comme jj-mm-aaaa, n'utilisez pas ce format.

0

J'ai utilisé DateTime.Parse() dans le passé.

Mais il semble que vous avez problème de la culture, cette approche pourrait être mieux:

// Parse a date and time with no styles. 
    dateString = "03/01/2009 10:00 AM"; 
    culture = CultureInfo.CreateSpecificCulture("en-US"); 
    styles = DateTimeStyles.None; 
    try 
    { 
    result = DateTime.Parse(dateString, culture, styles); 
    outputBlock.Text += String.Format("{0} converted to {1} {2}.", 
         dateString, result, result.Kind.ToString()) + "\n"; 
    } 
    catch (FormatException) 
    { 
    //Error 
    } 

Plus d'info sur msdn: http://msdn.microsoft.com/en-us/library/ey1cdcx8(VS.96).aspx

Mais vous pouvez aussi construire le temps actuel si cela fonctionne mieux:

DateTime d = new DateTime(Y, M, D); 
0

Il semble que l'application fonctionne sous une culture différente de ce que vous attendez de l'entrée de l'utilisateur. Vous voudrez peut-être change the culture à celui que vous attendez.