我的系统短日期时间格式为d / M / yyyy . 我正在通过“03/29/2011 02:38:18 PM”,所以它给出错误“字符串未被识别为有效的DateTime”
DateTime.Parse("03/29/2011 02:38:18 PM")
如果机器的日期时间格式设置为m / d / yyyy,则可以正常工作 .
Edit: 我的应用程序是一个winform应用程序,它包含一个数据gridview,这个网格视图包含一个自定义DateTime控件(列),由其他开发人员创建 . 当我尝试更改网格中此datetime列的值时,会发生此错误 . VS调试器没有捕获异常,所以我无法找到我应该尝试修复它的位置 .
谢谢
8 回答
使用
DateTime.ParseExact
从字符串解析日期时间例:
您可以尝试更改文化信息,以使您的输入与系统的格式相匹配 .
所以尝试在web.config中添加它:
请改用DateTime.ParseExact() . 如果通过传入正确的FormatString知道字符串看起来像进入函数,您可以准确指定如何解析日期 . 如果标准的DateTime格式字符串不起作用,则可以使用custom DateTime Format String .
根据
d/M/yyyy
格式,03/29/2011
将相当于29号月份显然不存在 .另一种格式有日期和月份切换,然后字符串代表29. March,这是一个完全有效的日期 .
来自MSDN:
是的,除非您提供FormatProvider,否则DateTime.Parse函数使用系统格式来解析日期 . 显然,在d / m / yyyy的情况下,没有第29个月,因此解析失败
你可以在这里找到答案:String was not recognized as a valid DateTime " format dd/MM/yyyy"
您可以使用相应的CultureInfo解析日期,CultureInfo定义日期格式和日期部分(月,日,年)或(日,月,年)的顺序 .
或者你可以使用ParseExact并给它一个格式字符串,如上面的答案所述 .
见“convert Different formate of DateTime to specific String format in c#”