3

この "03-06-2012 08:00 am" 文字列から C# DateTime オブジェクトを設定する方法。

次のタイプのコードを試しています:

DateTime lectureTime  = DateTime.Parse("03-06-2012 08:00 am");

このhttp://trentrichardson.com/examples/timepicker/プラグインに基づいた jQuery を使用して日時を生成しています。

アップデート -

以下の非常に多くの回答と、この小さな問題の基本を明確にするための多くのもの 以下のスナップショットから、私が試したことと、ビジュアルスタジオでのデバッグ中に受け取ったものを見ることができます ここに画像の説明を入力

4

3 に答える 3

3
string lectureTime = "03-06-2012 08:00 am";
DateTime time = DateTime.ParseExact(lectureTime , "dd-MM-yyyy hh:mm tt", CultureInfo.InvariantCulture);
  • dd: 日 [00-31]
  • MM: 月 [00-12]
  • yyyy: 年 [0000-9999]
  • '-': これらはダッシュで区切られます
  • hh: 時間 [00-12]
  • mm: 分[00-60]
  • tt: 時刻 [午前、午後] (大文字と小文字を区別しない)
于 2012-06-03T15:51:14.323 に答える
2

適切なカルチャがあれば、コードは変更しなくても機能します。ただし、文字列を生成したプログラムとは異なる日付形式を使用している可能性があります。

いつでも次のように指定することをお勧めしますCultureInfo

  • DateTime別のシステムによって生成された を解析しています。
  • DateTime別のシステムによって解析されるaを出力します (ユーザーに表示されるだけではありません)。

これを試して:

CultureInfo cultureInfo = new CultureInfo("en-GB"); // Or something else?
DateTime lectureTime  = DateTime.Parse("03-06-2012 08:00 am", cultureInfo);

オンラインでの動作を確認してください: ideone

DateTime.Parseとの違いDateTime.ParseExact

.NET で文字列の解析に最善を尽くすには、.NET を使用しますDateTime.Parse。さまざまな一般的なフォーマットを処理できます。

日付がどのようにフォーマットされるべきかを前もって正確に知っていて、このフォーマットと異なるものを拒否したい場合 (たとえ正しく解析でき、あいまいさがなくても) を使用しますDateTime.ParseExact

于 2012-06-03T15:51:27.707 に答える
1

DateTime.ParseExactを使用する必要があります。何かのようなもの

DateTime lectureTime  = DateTime.ParseExact("03-06-2012 08:00 am", "dd-MM-yyyy hh:mm tt", CultureInfo.InvariantCulture);
于 2012-06-03T15:49:29.920 に答える