我有一个类似的问题>格式异常字符串未被识别为有效的日期时间
但是,我的规范需要 ddMMyyyy 的日期格式,因此我修改了我的代码,但我仍然收到相同的错误
DateTime now = DateTime.Now;
DateTime dt = DateTime.ParseExact(now.ToString(), @"ddMMyyyy", CultureInfo.InvariantCulture);
我不清楚为什么。
我有一个类似的问题>格式异常字符串未被识别为有效的日期时间
但是,我的规范需要 ddMMyyyy 的日期格式,因此我修改了我的代码,但我仍然收到相同的错误
DateTime now = DateTime.Now;
DateTime dt = DateTime.ParseExact(now.ToString(), @"ddMMyyyy", CultureInfo.InvariantCulture);
我不清楚为什么。
您的代码失败,因为您试图解析 format 中的日期,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
工作,输入的字符串必须与模式匹配完全匹配。在您提到的另一个问题中,文本来自一个网络表单,其中格式被指定为一种格式。
在您的情况下,您生成的日期DateTime.Now.ToString()
将不是格式ddMMyyyy
。如果要进行日期往返,则需要在两个地方都指定格式:
DateTime now = DateTime.Now;
DateTime dt = DateTime.ParseExact(now.ToString("ddMMyyyy"), @"ddMMyyyy", CultureInfo.InvariantCulture);
调试您的代码并查看结果now.ToString()
是什么,它不是“ddMMyyyy”的格式,这就是解析失败的原因。如果您想以now
ddMMyyy 格式输出字符串,请尝试 now.ToSTring("ddMMyyyy") 。
now.ToString() 不会返回以这种方式格式化的字符串。尝试使用 now.ToString("ddMMyyyy")。您最好使用“30041999”之类的静态字符串进行测试