格式异常 - 字符串无法识别为有效的日期时间
本文关键字:有效 日期 时间 识别 异常 字符串 格式 | 更新日期: 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"(进行测试