I have date that I get from incoming API call: Wed, 6 Mar 2019 14:39:49 +0300
I need to parse this string to DateTime. For this I'm using the following code:
DateTime.ParseExact("Wed, 6 Mar 2019 14:39:49 +0300", 
                     new string[] { "ddd, dd MMM yyyy HH:mm:ss zzzz" },
                     CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);
But as a result I have error:
String 'Wed, 6 Mar 2019 14:39:49 +0300' was not recognized as a valid DateTime.
What am I doing wrong? How can I resolve this?
I see 2 things;
d specifier instead of dd specifier since your single digit day number does not have a leading zero.zzzz as a custom format specifier. You should use zzz specifier instead.DateTime.ParseExact("Wed, 6 Mar 2019 14:39:49 +0300", 
                     new string[] { "ddd, d MMM yyyy HH:mm:ss zzz" },
                     CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);
But honestly, if your strings have a UTC Offset value, I would suggest parse it to DateTimeOffset instead since a DateTime instance does not have offset part and using zzz specifiers is not recomended as stated on MSDN.
With
DateTimevalues, the "zzz" custom format specifier represents the signed offset of the local operating system's time zone from UTC, measured in hours and minutes. It does not reflect the value of an instance'sDateTime.Kindproperty. For this reason, the "zzz" format specifier is not recommended for use with DateTime values.
To parse DateTimeOffset,
DateTimeOffset.ParseExact("Wed, 6 Mar 2019 14:39:49 +0300", 
                           new string[] { "ddd, d MMM yyyy HH:mm:ss zzz" },
                           CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);
Now you can use it's .DateTime and/or .Offset properties separately if you want.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With