【问题标题】:Conversion failed with "date" was not recognized as a valid DateTime转换失败,“日期”未被识别为有效的日期时间
【发布时间】:2020-11-03 10:29:39
【问题描述】:

我尝试用下面的代码转换日期,

string currDate = @"Fri, 10 Jul 2020 05:48:28 -0500 (CDT)";
DateTime convDate = Convert.ToDateTime(currDate);

Console.WriteLine("COnverted Date :: " + convDate.ToString("yyyy-MM-dd'T'HH:mm:ss.fffK", CultureInfo.InvariantCulture));

但是,它失败并显示以下错误消息,

  Unhandled exception. System.FormatException: String 'Fri, 10 Jul 2020 05:48:28 -0500 (CDT)' was not recognized as a valid DateTime.

任何人都可以在这方面提供帮助。

谢谢,

【问题讨论】:

  • 使用DateTime.TryParseExact
  • 是的。感谢您的回复。我尝试使用此 DateTime convDate = DateTime.ParseExact(currDate, "yyyy-MM-dd'T'HH:mm:ss.fffK", CultureInfo.InvariantCulture);。但是,仍然是同样的错误。
  • 模式不匹配。就这样。尝试使用该模式格式化日期。你会发现它看起来完全不同。
  • 这能回答你的问题吗? Converting a String to DateTime
  • 尝试不带 (CDT) 的字符串 Fri, 10 Jul 2020 05:48:28 -05:00

标签: c# datetime datetime-conversion


【解决方案1】:

您可以在使用DateTime.ParseExact方法解析时将(CDT)放在格式字符串中的单引号中以忽略它

string currDate = @"Fri, 10 Jul 2020 05:48:28 -0500 (CDT)";
DateTime convDate = DateTime.ParseExact(currDate, "ddd, dd MMM yyyy HH:mm:ss K '(CDT)'", CultureInfo.InvariantCulture);

它返回一个本地日期时间,最终输出是

转换日期 :: 2020-07-10T13:48:28.000+03:00

要获得 UTC,您可以将 DateTimeStyles.AdjustToUniversal 参数传递给 ParseExact 方法。它给你

转换日期 :: 2020-07-10T10:48:28.000Z

【讨论】:

  • 感谢您的 cmets。实际上,我从谷歌电子邮件中得到了这种日期格式。所以,我每次都会收到不同的格式。例如,有时我得到这样的日期,2020 年 5 月 26 日星期二 11:15:19 GMT
  • @Ramachandran 对于 GMT 时间,您可以使用 ddd, dd MMM yyyy HH:mm:ss 'GMT' 格式字符串。如果你每次都有不同的格式,你可以先从字符串中删除时区前缀,然后解析它
  • 是...谢谢您..谢谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多