我有从传入的API调用中得到的日期: Wed, 6 Mar 2019 14:39:49 +0300
我需要将此字符串解析为DateTime。为此,我使用以下代码:
DateTime.ParseExact("Wed, 6 Mar 2019 14:39:49 +0300",
new string[] { "ddd, dd MMM yyyy HH:mm:ss zzzz" },
CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);
Run Code Online (Sandbox Code Playgroud)
但是结果是我有错误:
字符串'Wed,6 Mar 2019 14:39:49 +0300'未被识别为有效的DateTime。
我究竟做错了什么?我该如何解决?
Son*_*nül 12
我看到两件事;
DateTime.ParseExact("Wed, 6 Mar 2019 14:39:49 +0300",
new string[] { "ddd, d MMM yyyy HH:mm:ss zzz" },
CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);
Run Code Online (Sandbox Code Playgroud)
但老实说,如果您的字符串具有UTC偏移值,我建议将其解析为DateTimeOffset一个DateTime实例,因为该实例不具有偏移部分,并且zzz不建议使用说明符,如MSDN上所述。
使用
DateTime值时,“ zzz”自定义格式说明符表示本地操作系统时区与UTC的带符号偏移,以小时和分钟为单位。它不反映实例DateTime.Kind属性的值。因此,不建议将“ zzz”格式说明符与DateTime值一起使用。
为了解析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);
Run Code Online (Sandbox Code Playgroud)
现在,您可以根据需要分别使用它的.DateTime和/或.Offset属性。