2017-05-17 8 views
0
var test = DateTime.ParseExact("Feb 4 2014 12:00AM", "MMM dd yyyy HH:mmtt", System.Globalization.CultureInfo.InvariantCulture).ToString("yyy-MM-dd"); 
System.Diagnostics.Debug.WriteLine(test); 

このコードを取得しました。私がしようとしているのはFeb 4 2014 12:00AM2014-02-04に変換することです。DateTime変更フォーマットエラー

私が手にエラーが、これはいずれかです。

型「にSystem.FormatException」の例外が

追加情報がmscorlib.dllで発生したが、ユーザーコードで処理されませんでした:文字列でした有効なDateTimeとして認識されません。

しかし、何が間違っているかはわかりません。何か案が ?

答えて

4

フォーマットに問題があります。それは次のようになります。

"MMM d yyyy hh:mmtt" 

用途:

  • 単一d日付の部分のために、それはシングルとダブル桁の日付に対応できるように、あなたの現在の指定ddは次のようにゼロで開始する単一桁の日付部分を期待します04dをシングル/ダブル数字の両方のパースに使用できます。
  • 文字列にAMがあり、時刻形式が12時間であり、24時間ではないことを意味しているため、HHの代わりにを使用してください。

だからあなたのコードは次のようになります。

var test = DateTime.ParseExact("Feb 4 2014 12:00AM", "MMM d yyyy hh:mmtt", System.Globalization.CultureInfo.InvariantCulture).ToString("yyy-MM-dd"); 
+1

どうもありがとうございました。私はまた単一の 'd'で試しましたが、問題は' hh'から来たとは考えていませんでした。私は逆の場所を読んで、 '24時間ではなく12時間で' HH 'だと思った。 Thanx buddy :) – Darkpingouin

+0

日付がこの形式の場合でも例外はあります: 'Apr 17 2014 12:00 AM'は 'd'は一日の日数しか管理していませんか? – Darkpingouin

+0

最後に問題が見つかりました。だから、明らかに、あなたはSQL reauestからDateをStringに変換します。次のことを行います: - 日番号が '4'の場合、' 4'ではなく '4'が与えられます。 - 日が「17」の場合は、「17」が表示されます。 私はそれを解決するために置換機能を使用します。 – Darkpingouin

関連する問題