C# DateTime.ParseExact给出错误:字符串未被识别为有效的DateTime

C# DateTime.ParseExact给出错误:字符串未被识别为有效的DateTime,c#,datetime,tryparse,C#,Datetime,Tryparse,我想解析DateTime,这里是我的代码: var datastring =p1.ItemArray[2].ToString(); var format = "dd.MM.yyyy"; var date = DateTime.ParseExact(datastring,format,CultureInfo.InvariantCulture); p1-是DataRow,在p1中。ItemArray[2]我有DateTime的值 在watchp1.ItemArray[2]中有以下值:“09/03/

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

var datastring =p1.ItemArray[2].ToString();
var format = "dd.MM.yyyy";
var date = DateTime.ParseExact(datastring,format,CultureInfo.InvariantCulture);
p1-是
DataRow
,在
p1中。ItemArray[2]
我有DateTime的值

在watch
p1.ItemArray[2]
中有以下值:
“09/03/2012 00:00:00”
他的类型是
DateTime


解析后抛出错误:字符串未被识别为有效的日期时间。您可以在格式中包含时间,因为您试图解析的字符串似乎包含时间:

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

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

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

var format = "dd/MM/yyyy hh:mm:ss";
另外,我建议您使用该方法,因为它提供了更好的防御编程模式,而不是抛出异常。

IMHO您应该使用它

var datastring = p1.ItemArray[2].ToString();
var format = "dd/MM/yyyy HH:mm:ss";
var date = DateTime.ParseExact(datastring, format, CultureInfo.InvariantCulture);
使用
ParseExact
时,您必须提供字符串中包含的日期的确切格式IMHO您应该使用

var datastring = p1.ItemArray[2].ToString();
var format = "dd/MM/yyyy HH:mm:ss";
var date = DateTime.ParseExact(datastring, format, CultureInfo.InvariantCulture);
使用
ParseExact
时,必须提供字符串中包含的日期的精确格式更改此项:

var format = "dd.MM.yyyy";
为此:

var format = "dd/MM/yyyy HH:mm:ss";
更改此项:

var format = "dd.MM.yyyy";
为此:

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

因为parseExact将希望收到与您指定的格式相同的格式,即“dd.MM.yyyy”。您可以尝试:

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

因为parseExact将希望收到与您指定的格式相同的格式,即“dd.MM.yyyy”。您可以尝试:

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

很可能是由于服务器区域设置和UI区域设置之间的差异

一种更简单的方法是在web.config中指定全球化详细信息


或者更详细地说

<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB" />


但请确保这不会与您的应用程序发生冲突,这很可能是由于服务器区域设置和UI区域设置之间的差异

一种更简单的方法是在web.config中指定全球化详细信息


或者更详细地说

<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB" />


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

方法“ToString”有0个参数tu它用1个参数调用方法“ToString”有0个参数tu它用1个参数调用我想与格式为“dd.MM.yyyy”的其他变量进行比较@Alex:没关系:转换其他“字符串日期”输入日期时间,然后比较两个日期!!如果你需要比较日期,不要比较字符串:)@Alex你是什么意思?比较两个DateTime结构或字符串?我想与格式为“dd.MM.yyyy”的其他变量进行比较@Alex:没关系:转换DateTime中的其他“字符串日期”,然后比较两个日期!!如果你需要比较日期,不要比较字符串:)@Alex你是什么意思?比较两个日期时间结构或字符串?