我正在尝试将日期字符串解析为DateTime
变量。我发现ParseExact
是这样做的方法,但我试试这个我得到错误:
字符串未被识别为有效的DateTime。
string timeFormat = "dd-MM-yyyy hh:mm:ss";
DateTime startDate = DateTime.ParseExact(reader["startdate"].ToString(), timeFormat, CultureInfo.InvariantCulture);
DateTime nextDate = DateTime.ParseExact(reader["nextdate"].ToString(), timeFormat, null);
我已尝试使用null
(恰好在另一页上工作)和CultureInfo.InvariantCulture
。
reader["startdate"].ToString()
输出:01-08-2012 15:39:09
和
reader["nextdate"].ToString()
输出:01-08-2012 15:39:09
我认为它应该有效,但事实并非如此。
有人知道出了什么问题? :)
答案 0 :(得分:43)
您在格式字符串中使用hh
。这是一天的12小时""领域。值15不在范围内......
您需要HH
代替,这是24小时的说明符。
有关详细信息,请参阅MSDN custom date and time format strings documentation。
答案 1 :(得分:1)
很可能是由于您的服务器区域设置和UI区域设置之间存在差异
一种更简单的方法是在web.config中指定全球化详细信息
像
<configuration>
<system.web>
<globalization culture="en-GB"/>
</system.web>
</configuration>
或更详细的
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB" />
但请确保这不会与您的应用程序发生冲突
答案 2 :(得分:0)
尝试这样做有效
DateTime.ParseExact("01-08-2012 15:36:25", "dd-MM-yyyy HH:mm:ss", null);
答案 3 :(得分:0)
我不确定这是否有帮助,但我使用了本文中的确切代码并且它对我有用,因为DateTime.ParseExact(dat,“dd / MM / yyy HH:MM”,CultureInfo.InvariantCulture,System.Globalization .DateTimeStyles.None)不适合我。
阅读本文我刚刚在网上发布: http://rochcass.wordpress.com/2012/08/27/error-string-was-not-recognized-as-a-valid-datetime-solution/#more-350