2012-08-31 4 views

Répondre

4

Dans un custom date format string, / désigne le séparateur de date spécifique à la culture, et non le caractère littéral /. Ainsi, le résultat de votre code dépend des paramètres de localisation de l'utilisateur (ou du serveur).

Pour rendre votre code indépendant des paramètres spécifiques à la culture, vous avez deux options:

  • expressis verbis une culture qui utilise une barre oblique comme séparateur de date, par exemple

    DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", 
            CultureInfo.InvariantCulture) 
    
  • ou d'échapper le caractère, par ex.

    DateTime.ParseExact(txtTourStartDate.Text, @"dd\/MM\/yyyy", null) 
    

    (notez le @et le \).

Les deux devraient donner le résultat souhaité.

+0

remercie ses travaux pour moi ... – rahularyansharma

2

Cela suffit:

objTour.tourStartDate = DateTime.ParseExact(txtTourStartDate.Text, 
              "dd/MM/yyyy", 
              CultureInfo.InvariantCulture); 
+0

OMG, je viens de réaliser ce que ce gars-là est en train de faire (Parse -> ToString -> ToDateTime). Vous avez raison, bien sûr, +1. Je vais quand même garder ma réponse ici, de toute façon, puisque ne pas s'échapper de/est une autre chose qu'il fait mal. – Heinzi

+0

Quand j'ai vu la question, j'ai vraiment dû me demander comment il a pu faire ça. – nunespascal

2

Votre code d'origine fonctionne, même si vous effectuez beaucoup de conversions inutiles. (DateTime -> ToString -> ToDateTime), le numéro réel est InvariantCulture. Puisque vous passez null pour CultureInfo essayez CultureInfo.InvariantCulture.

Votre code d'origine:

objTour.tourStartDate = 
    Convert.ToDateTime(
     DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture) 
      .ToString("MM/dd/yyyy")); 

Un meilleur pourrait être:

objTour.tourStartDate = 
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture) 
Questions connexes