当我尝试将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
为什么我得到这个?
答案 0 :(得分:7)
除了你将DateTime转换为字符串然后再转回之外,DateTime格式并不完全匹配。
DateTime.ParseExact
将字符串解析为DateTime对象,您提供的格式必须与完全匹配。您说DateTime.Now
显示为6/5/2013 2:29:21 PM
,正确的格式为M/d/yyyy h:mm:ss tt
。有关自定义日期格式的详细信息,请查看MSDN。
我要说的是,通过查看您的代码,我认为您正在尝试将日期格式化为日期,这可以使用ToString
方法实现日期时间:
string todaysDate = DateTime.Now.ToString("MM/dd/yyyy"); // todaysDate will contain "06/05/2013"
答案 1 :(得分:2)
6/5/2013 2:29:21 PM
与MM/dd/yyyy
不同。
当然,解析失败了。
从您的评论中听起来您确实在测试格式字符串,而您并不关心日期的价值。 那么为什么不以您真正想要的格式硬编码您的日期:
String userInput = "MM/dd/yyyy";
DateTime.ParseExact("11/11/2011", userInput, CultureInfo.CurrentCulture)
答案 2 :(得分:1)
注意名为 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