我遇到类似的问题> Format exception String was not recognized as a valid DateTime
但是,我的规范要求日期格式为ddMMyyyy,因此我修改了我的代码,但我仍然遇到同样的错误
DateTime now = DateTime.Now;
DateTime dt = DateTime.ParseExact(now.ToString(), @"ddMMyyyy", CultureInfo.InvariantCulture);
我不明白为什么。
答案 0 :(得分:1)
要使ParseExact
起作用,进入的字符串必须与模式匹配完全匹配。在您提到的另一个问题中,文本来自一个Web表单,其中格式被指定为一种格式。
在您的情况下,您使用DateTime.Now.ToString()
生成了日期,其格式不是ddMMyyyy
。如果您想使日期往返,您需要指定两个地方的格式:
DateTime now = DateTime.Now;
DateTime dt = DateTime.ParseExact(now.ToString("ddMMyyyy"), @"ddMMyyyy", CultureInfo.InvariantCulture);
答案 1 :(得分:1)
调试代码并查看now.ToString()
的结果是什么,它的格式不是“ddMMyyyy”,这就是解析失败的原因。如果您想以ddMMyyy格式输出now
作为字符串,请尝试now.ToSTring(“ddMMyyyy”)。
答案 2 :(得分:1)
now.ToString()不返回以这种方式格式化的字符串。尝试使用now.ToString(“ddMMyyyy”)。 使用像“30041999”
这样的静态字符串进行测试可能会更好答案 3 :(得分:1)
您的代码失败是因为您尝试以ddMMyyyy
格式解析日期,默认情况下DateTime.ToString()
将生成当前文化中包含日期和时间的格式。
对于我自己在澳大利亚的dd/MM/yyy hh:mm:ss p
,例如11/10/2013 11:07:03 AM
您必须意识到,DateTime对象实际上将日期存储为单个组件(例如,日,月,年),只有在您将值输出为所需格式时才需要格式化。 E.g。
DateTime now = DateTime.Now;
string formattedDate = now.ToString("ddMMyyyy", DateTimeFormatInfo.InvariantInfo);
有关更多信息,请参阅api doc: http://msdn.microsoft.com/en-us/library/8tfzyc64.aspx