2010-12-01 70 views
0

J'envoie une chaîne au format dd/MM/yyyy, qui est ensuite analysée dans la culture lv-LV définie par le paramètre de globalisation web.config.DateTime.Parse, paramètres de la culture lettonne

Je compare alors la date à DateTime.Now pour voir si c'est dans le passé.

Le problème est, DateTime.Parse convertit ma chaîne au format , mais DateTime.Now a le format MM.dd.yyyy, donc la comparaison échoue toujours. Pourquoi DateTime.Now serait-il différent de la sortie de DateTime.Parse, sur la même culture de fil?

Merci!

(Mise à jour) C'est le code que je utilise:

InputText contient l'entrée d'un formulaire en format JJ.MM.AAAA

DateTime date = DateTime.Parse(InputText, CultureInfo.CurrentCulture); 
// Check it's not in the past 
this.IsValid = (date.CompareTo(DateTime.Now) > 0); 

[DateTime.Now] dans ce contexte est MM format .DD.YYYY utilisant LV-LV cultureInfo [date] est au format JJ.MM.AAAA après la DateTime.Parse

+0

Je pense que vous devez nous montrer un code plus complet; un 'DateTime' (comme' .Now', ou le résultat d'un '.Parse') n'a pas * un * format propre - ddmm versus mmdd est une propriété de * chaînes de caractères *, pas de' DateTime 'Valeurs eux-mêmes. – AakashM

+0

comparez-vous deux dates en tant que chaînes? Si vous comparez deux structures datetime, la culture que toString représente n'a aucune importance. – Alex

Répondre

2

a DateTime n'a pas le formatage - il est tout simplement un point dans le temps.

Si vous le visualisez, cela signifie que vous l'affichez. Utilisez la bonne culture pour sortir la date.

DateTime.ToString a une surcharge qui prennent un fournisseur de format comme un CultureInfo:

string formatted = DateTime.ToString(new CultureInfo("lv-LV")); 

Si non spécifié (dans le code ou la configuration), la culture par défaut du système sera utilisé (ou CultureInfo.InvariantCulture, dans certains cas).

1

Si vous voulez juste comparer les 2 dates, vous n'avez pas besoin de convertir en chaîne d'abord.

DateTime myDate = DateTime.Parse(myDateAsString);//with the correct locale to ensure it's correctly parsed 
if (myDate < DateTime.Now) 
{ 
    //it's in the past 
}