1

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 として認識されませんでした。

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 ロケールの違いが原因です。

1 つの簡単な方法は、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 に答える