DateTime.ParseExact给出错误:String未被识别为有效的DateTime

时间:2012-09-20 06:57:40

标签: c# datetime tryparse

我想解析DateTime,这里是我的代码:

var datastring =p1.ItemArray[2].ToString();
var format = "dd.MM.yyyy";
var date = DateTime.ParseExact(datastring,format,CultureInfo.InvariantCulture);

p1 - DataRowp1.ItemArray[2]我有DateTime值

在观看p1.ItemArray[2]中有这个值:"09/03/2012 00:00:00"他的类型是DateTime

解析抛出错误后:字符串未被识别为有效的DateTime。

5 个答案:

答案 0 :(得分:2)

您可以在格式中包含时间,因为您尝试解析的字符串似乎包含时间:

var format = "dd/MM/yyyy hh:mm:ss";

我还建议您使用TryParseExact方法,因为它提供了更好的防御性编程模式,而不是抛出异常。

答案 1 :(得分:2)

恕我直言,你应该使用

var datastring = p1.ItemArray[2].ToString();
var format = "dd/MM/yyyy HH:mm:ss";
var date = DateTime.ParseExact(datastring, format, CultureInfo.InvariantCulture);

使用ParseExact,您必须提供字符串

中包含的日期的确切格式

答案 2 :(得分:1)

改变这个:

var format = "dd.MM.yyyy";

有了这个:

var format = "dd/MM/yyyy HH:mm:ss";

答案 3 :(得分:0)

因为parseExact将期望接收您指定的格式“dd.MM.yyyy”。你可以尝试:

var format = "dd.MM.yyyy";
var datastring =p1.ItemArray[2].ToString(format);

答案 4 :(得分:0)

很可能是由于您的服务器区域设置和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" />

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