Felix Arnold
Felix Arnold

Reputation: 891

C# DateTime Parse inconsistency

I´ve got a question about DateTime My Code is:

DateTime.ParseExact("2018-06-13T12:05:55.7738391Z", "yyyy-MM-ddTHH:mm:ss.fffffffZ", System.Globalization.CultureInfo.InvariantCulture).ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ")

The result is:

"2018-06-13T14:05:55.7738391Z"

Why does the DateTime add 2 hourse? (I tried with ...00:05:55...) And how do I prevent this?

Upvotes: 0

Views: 197

Answers (1)

Neil
Neil

Reputation: 11891

My guess would be you are in a time zone of UTC+2.

var time = DateTime.ParseExact("2018-06-13T12:05:55.7738391Z", "yyyy-MM-ddTHH:mm:ss.fffffffZ", System.Globalization.CultureInfo.InvariantCulture);

Console.WriteLine(time.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ"); // + 2 hours ?   
Console.WriteLine(time.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ"); // +0 hours ?

You have said the time is UTC (Z = zulu time = UTC+0), but the timezone of your computer is automatically adding 2 hours.

--

And to be totally correct, you should use time.ToString("o");. You are confusing matters because your ToString contains a trailing Z, which is not added by the formatter but just copied into the output.

Upvotes: 2

Related Questions