Comment convertir une chaîne en un format DateTime spécifique en c #?

Comment convertir la chaîne "28/09/2009" en DateTime dans un format spécifique? Ex: je veux convertir “2009-09-28 17:30:40” en DateTime. Je veux convertir “28/09/2009 17:30:40” en DateTime. Je veux convertir “20090928 17:30:40” en DateTime.

Il existe plusieurs formats possibles. J’ai essayé ceci:

 ssortingng[] formats = new ssortingng[] {"yyyymmdd","yyyymmddThhmmss","yyyy/mm/dd hh:mm:ss","yyyy/mm/dd","yyyy-mm-dd hh:mm:ss","yyyy-mm-dd"}; IFormatProvider culture = new CultureInfo("en-US", true); DateTime formattedDate = DateTime.ParseExact(aDate, formats, culture, DateTimeStyles.None); 

Cet exemple lève une exception avec le message “La chaîne n’a pas été reconnue comme un DateTime valide”.

Quel est le problème dans le code ci-dessus?

Aucun de vos formats ne met la journée en premier, comme ceci: "dd/MM/yyyy" .

Notez également le ‘M’ majuscule, car minuscule ‘m’ est pour ‘minutes’. Vous avez un problème similaire avec vos heures; étant donné que vos échantillons utilisent tous un temps de 24 heures, vous avez besoin d’un «H» majuscule.

Votre tableau de format devrait ressembler à ceci:

 ssortingng[] formats = {"dd/MM/yyyy", "yyyy-MM-dd HH:mm:ss", "dd/MM/yyyy HH:mm:ss", "yyyyMMdd HH:mm:ss"}; 

Ces formats correspondent exactement aux exemples de chaînes fournis.

De plus, vous voudrez probablement utiliser la culture invariante plutôt que d’ en-US dans ce cas. Sinon, le caractère ‘/’ dans vos chaînes de format est vraiment un séparateur de date spécifique à la culture, qu’un utilisateur peut remplacer par son système local.

Enfin, comme vous avez manifestement du mal à faire correspondre les chaînes, vous pouvez utiliser TryParseExact() , qui fonctionne comme l’parsing exacte mais utilise un paramètre out plutôt que de renvoyer la valeur, de sorte qu’il puisse renvoyer un booléen pour indiquer succès ou échec plutôt que de lancer une exception.

Voir la référence complète de la chaîne de format ici:
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx