当我尝试将其转换DateTime
为特定格式时,出现此错误。
DateTime.Now= 6/5/2013 2:29:21 PM
DateTime.ParseExact(CStr(DateTime.Now), "MM/dd/yyyy", CultureInfo.CurrentCulture)
错误:
String was not recognized as a valid DateTime
为什么我得到这个?
除了您将 DateTime 转换为字符串然后再转换回来的事实之外,DateTime 格式不完全匹配。
DateTime.ParseExact
将字符串解析为 DateTime 对象,并且您提供的格式必须完全匹配。你说DateTime.Now
出现6/5/2013 2:29:21 PM
,正确的格式是M/d/yyyy h:mm:ss tt
。有关自定义日期格式的更多信息,请查看MSDN。
我要冒昧地说,通过查看您的代码,我认为您正在尝试将日期格式化为日期,这可以使用ToString
DateTime 上的方法来实现:
string todaysDate = DateTime.Now.ToString("MM/dd/yyyy"); // todaysDate will contain "06/05/2013"
6/5/2013 2:29:21 PM
不一样MM/dd/yyyy
。
所以当然解析失败了。
从您的评论看来,您实际上是在测试格式字符串,并且您并不关心日期的值。那么为什么不以您真正想要的格式硬编码您的日期:
String userInput = "MM/dd/yyyy";
DateTime.ParseExact("11/11/2011", userInput, CultureInfo.CurrentCulture)
注意方法中名为Exact的部分,你给它一个包含时间的字符串,并且没有指定如何解析时间,所以解析会失败。
试试这个:
DateTime.ParseExact(str, "M/d/yyyy h:mm:ss tt", CultureInfo.CurrentCulture)
示例LINQPad程序:
void Main()
{
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US");
string str = "6/5/2013 2:29:21 PM";
DateTime.ParseExact(str, "M/d/yyyy h:mm:ss tt", CultureInfo.CurrentCulture).Dump();
}
输出:
6/5/2013 2:29:21 PM