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
Répondre
Vous pouvez utiliser DateTime.ParseExact
J'ai utilisé DateTime.ParseExact (this.txtFromDate.Text, "jj-MM-aaaa", CultureInfo.CultureInvariant) soyez prudent avec MM majuscule, car il est important :-) Merci – Blerta
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.
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);
Je suggère d'utiliser DateTime.TryParseExact() et spécifiez votre format de date.
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.
Comment convertissez-vous en DateTime? –
J'utilise DateTime fromDate = Convert.ToDateTime (this.txtFromDate.Text); – Blerta