23

我正在尝试将日期字符串解析为DateTime变量。我发现这ParseExact是这样做的方法,但我尝试这个我得到了错误:

字符串未被识别为有效的日期时间。

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

我认为它应该工作,但它没有。

有人知道出了什么问题吗?:)

4

4 回答 4

60

您正在使用hh格式字符串。这是一个 12 小时的“一天中的小时”字段。值 15 不在范围内...

相反,您需要HH的是 24 小时说明符。

有关详细信息,请参阅MSDN 自定义日期和时间格式字符串文档

于 2012-08-01T19:19:46.013 回答
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" />

但请确保这不会与您的应用程序发生冲突

于 2013-04-16T12:01:14.233 回答
0

我不确定这是否有帮助,但我使用了本文中的确切代码,它对我有用,因为 DateTime.ParseExact(dat, "dd/MM/yyy HH:MM", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles。无)对我不起作用。

阅读这个我刚刚在网上发布: http ://rochcass.wordpress.com/2012/08/27/error-string-was-not-recognized-as-a-valid-datetime-solution/#more-350

于 2012-08-27T19:10:39.910 回答
0

试试这个它有效

DateTime.ParseExact("01-08-2012 15:36:25", "dd-MM-yyyy HH:mm:ss", null);
于 2012-08-01T19:33:06.977 回答