日付文字列をDateTime
変数に解析しようとしています。 ParseExact
がそれを行う方法であることがわかりましたが、これを実行するとエラーが発生します。
文字列は有効なDateTimeとして認識されませんでした。
_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
うまくいくと思いますが、うまくいきません。
誰かが何が悪いのか考えていますか? :)
書式文字列でhh
を使用しています。これは12時間の「時間」フィールドです。値15は範囲外です...
代わりに、24時間指定子であるHH
が必要です。
詳細については、 MSDNカスタム日付および時刻フォーマット文字列のドキュメント を参照してください。
ほとんどの場合、サーバーロケールと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" />
しかし、これがアプリケーション全体と衝突しないことを確認してください
これが役立つかどうかはわかりませんが、この記事の正確なコードを使用しましたが、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 -35
これを試してみてください
DateTime.ParseExact("01-08-2012 15:36:25", "dd-MM-yyyy HH:mm:ss", null);