web-dev-qa-db-fra.com

Convertir DateTime au format UK

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?

13
nick gowdy

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.

13
Lloyd

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.

5
Mohammad Dehghan

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);
1
Mehmet Ataş

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");
1
daryal