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ロケールの違いが原因である可能性があります

より簡単な方法の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-16T12:01:14.233 に答える
0

これを試してみてください

DateTime.ParseExact("01-08-2012 15:36:25", "dd-MM-yyyy HH:mm:ss", null);
于 2012-08-01T19:33:06.977 に答える
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 に答える