Je souhaite convertir la date "01/22/2013 10:00:00" en "22/01/2013 10:00:00" et ma méthode ne reconnaît pas ma chaîne de date.
DateTime dt = DateTime.ParseExact(StartDate, "MM dd yyyy h:mm", CultureInfo.InvariantCulture);
StartDate = dt.ToString("dd/M/yyyy");
dt = DateTime.ParseExact(EndDate, "MMM dd yyyy h:mm", CultureInfo.InvariantCulture);
EndDate = dt.ToString("dd/M/yyyy");
Je reçois cette erreur:
System.FormatException - La chaîne n'a pas été reconnue comme un DateTime valide.
Quel est le format de chaîne correct pour ParseExact?
Le format de votre date est incorrect, pour les États-Unis, il s'agirait de 01/22/2013 10:00:00
qui est MM/dd/yyyy HH:mm:ss
. Pour le Royaume-Uni, ce serait dd/MM/yyyy
etc.
DateTime dt = DateTime.ParseExact(StartDate, "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
dt.ToString("dd/MM/yyyy");
Notez que je suppose ici une horloge de 24 heures, raison pour laquelle j’utilise HH
. Si vous vouliez une horloge de douze heures, vous auriez besoin de hh
mais vous devriez aussi mettre AM/PM, etc.
Utilisez ce code:
DateTime dt = DateTime.ParseExact(StartDate, "MM/dd/yyyy hh:mm:ss", CultureInfo.InvariantCulture);
StartDate = dt.ToString("dd/MM/yyyy hh:mm:ss");
Notez la modification de la chaîne de formatage de ParseExact
.
Essaye ça
var str = "01/22/2013 10:00:00";
var date = DateTime.ParseExact(str, "MM/dd/yyyy HH:mm:ss", new CultureInfo("en-GB"));
var res = date.ToString("dd/MM/yyyy HH:mm:ss", new CultureInfo("en-GB"));
Console.WriteLine(res);
Console.WriteLine("22/01/2013 10:00:00" == res);
Vous utilisez des barres obliques et vous avez "secondes" partie dans votre chaîne de date. Vous devez modifier le format fourni dans la méthode ParseExact
:
string StartDate = "01/22/2013 10:00:00";
DateTime dt = DateTime.ParseExact(StartDate, "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
StartDate = dt.ToString("dd/M/yyyy");