0

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

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

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

我不清楚为什么。

4

4 回答 4

1

您的代码失败,因为您试图解析 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

于 2013-10-11T00:12:53.687 回答
1

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

在您的情况下,您生成的日期DateTime.Now.ToString()将不是格式ddMMyyyy。如果要进行日期往返,则需要在两个地方都指定格式:

DateTime now = DateTime.Now;
DateTime dt = DateTime.ParseExact(now.ToString("ddMMyyyy"), @"ddMMyyyy", CultureInfo.InvariantCulture);
于 2013-10-10T23:22:44.287 回答
1

调试您的代码并查看结果now.ToString()是什么,它不是“ddMMyyyy”的格式,这就是解析失败的原因。如果您想以nowddMMyyy 格式输出字符串,请尝试 now.ToSTring("ddMMyyyy") 。

于 2013-10-10T23:22:52.363 回答
1

now.ToString() 不会返回以这种方式格式化的字符串。尝试使用 now.ToString("ddMMyyyy")。您最好使用“30041999”之类的静态字符串进行测试

于 2013-10-10T23:23:35.213 回答