c#tryParseExact无法识别为有效的日期时间

时间:2019-02-26 17:12:36

标签: c# datetime

我正在尝试解析一个我要解析的字符串。

当我使用var newDt = Convert.ToDateTime("3/6/2019 12:00:00 AM +00:00");

它为我提供了具有不同时区的日期。我会得到3/5/2019 4:00AM

的日期时间

我希望它解析并返回与字符串相同的日期时间。

我尝试过

var newDt = DateTime.ParseExact("3/6/2019 12:00:00 AM +00:00", "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);

我得到了错误

  

System.FormatException:'字符串未被识别为有效字符串   日期时间。

如何解析日期"3/6/2019 12:00:00 AM +00:00"以返回具有3/6/2019 12AM相同值的日期时间

1 个答案:

答案 0 :(得分:4)

您的计算机中可能有UTC−08:00 time zone(我假设您的Convert.ToDateTime代码部分返回3/6/2019 4:00AM而不是3/5/2019 4:00AM),这就是为什么用偏移值解析它的原因,您将获得4个小时的附加值。

如果您的字符串包含UTC offset值,最好将其解析为DateTimeOffset而不是DateTime

var newDt = DateTimeOffset.ParseExact("3/6/2019 12:00:00 AM +00:00", 
                                      "M/d/yyyy h:mm:ss tt zzz",
                                      CultureInfo.InvariantCulture);

然后您可以使用它的.DateTime property来获得所需的值。