97 votes

Pourquoi ne peut pas DateTime.Parse parse UTC date

Pourquoi ne peut-il pas analyser ceci :

DateTime.Parse("Tue, 1 Jan 2008 00:00:00 UTC")

105voto

David Thielen Points 3176

En supposant que vous utilisiez le format "o" pour votre datetime de sorte que vous ayez "2016-07-24T18:47:36Z", il existe un moyen très simple de gérer cela.

Appelez DateTime.Parse("2016-07-24T18:47:36Z").ToUniversalTime().

Ce qui se passe quand vous appelez DateTime.Parse("2016-07-24T18:47:36Z") est que vous obtenez un DateTime défini sur le fuseau horaire local. Il le convertit donc en heure locale.

Le ToUniversalTime() le change en un DateTime UTC et le convertit à nouveau en temps UTC.

51voto

Il suffit de l'utiliser :

var myDateUtc = DateTime.SpecifyKind(DateTime.Parse("Tue, 1 Jan 2008 00:00:00"), DateTimeKind.Utc);

if (myDateUtc.Kind == DateTimeKind.Utc)
{
     Console.WriteLine("Yes. I am UTC!");
}

Vous pouvez tester ce code en utilisant le compilateur c# en ligne :

http://rextester.com/

J'espère que ça aidera.

22voto

user213809 Points 21

ou utilisez le style DateTimeToUniversal dans un appel à

DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)

19voto

Darin Dimitrov Points 528142

Vous devez spécifier le format :

DateTime date = DateTime.ParseExact(
    "Tue, 1 Jan 2008 00:00:00 UTC", 
    "ddd, d MMM yyyy HH:mm:ss UTC", 
    CultureInfo.InvariantCulture);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X