1

我想解析 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 的值

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

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

4

5 回答 5

2

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

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

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

于 2012-09-20T06:59:12.860 回答
2

恕我直言,您应该使用

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

ParseExact必须提供字符串中包含的确切日期格式

于 2012-09-20T06:59:26.560 回答
1

改变这个:

var format = "dd.MM.yyyy";

有了这个:

var format = "dd/MM/yyyy HH:mm:ss";
于 2012-09-20T07:00:56.553 回答
0

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

var format = "dd.MM.yyyy";
var datastring =p1.ItemArray[2].ToString(format);
于 2012-09-20T07:02:51.550 回答
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" />

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

于 2013-04-16T11:55:43.527 回答