格式异常 - 字符串无法识别为有效的日期时间

本文关键字:有效 日期 时间 识别 异常 字符串 格式 | 更新日期: 2023-09-27 18:34:46

我有一个与此类似的问题> 格式异常 字符串未被识别为有效的日期时间

但是,我的规范要求日期格式为 ddMMyyyy,因此我修改了我的代码,但我仍然收到相同的错误

 DateTime now = DateTime.Now;
 DateTime dt = DateTime.ParseExact(now.ToString(), @"ddMMyyyy", CultureInfo.InvariantCulture);

我不清楚为什么。

格式异常 - 字符串无法识别为有效的日期时间

您的代码失败,因为您尝试以 ddMMyyyy 格式解析日期,而默认情况下,DateTime.ToString() 将生成一种在当前区域性中同时包含日期和时间的格式。对于我在澳大利亚来说,这将是dd/MM/yyy hh:mm:ss p例如 11/10/2013 11:07:03 AM

您必须意识到,DateTime 对象实际上将日期存储为单个组件(例如日、月、年(,当您将值输出为所需的任何格式时,只需要格式化。例如

DateTime now = DateTime.Now;
string formattedDate = now.ToString("ddMMyyyy", DateTimeFormatInfo.InvariantInfo);

有关更多信息,请参阅 api 文档:http://msdn.microsoft.com/en-us/library/8tfzyc64.aspx

要使ParseExact正常工作,传入的字符串必须与模式匹配完全匹配。 在您提到的另一个问题中,文本来自一个 Web 表单,其中格式被指定为一种格式。

在您的情况下,您使用DateTime.Now.ToString()生成了日期,该日期的格式不会为 ddMMyyyy 。 如果要进行日期往返,则需要在两个位置指定格式:

DateTime now = DateTime.Now;
DateTime dt = DateTime.ParseExact(now.ToString("ddMMyyyy"), @"ddMMyyyy", CultureInfo.InvariantCulture);

调试你的代码,看看now.ToString()的结果是什么,它不是"ddMMyyyy"的格式,这就是解析失败的原因。如果要将now输出为 ddMMyyy 格式的字符串,请立即尝试。ToSTring("ddMMyyyy"( 代替。

现在。ToString(( 不返回以这种方式格式化的字符串。 立即尝试使用。ToString("ddMMyyyy"(.最好使用静态字符串(如"30041999"(进行测试