2012-04-12 13 views
-2
を処理することができ

//エラー文字列、日付C#のdatetime.tryparseはエラー日付

string s = "2012-4-5-02"; 
DateTime dt; 
if (DateTime.TryParse(s,out dt)) 
    MessageBox.Show(dt.ToString("yyyy-MM-dd")); 
else 
    MessageBox.Show("error date"); 

//出力:2012-04-05 //なぜそれが出力することができ、良好な日付形式?エラーの日付を表示しません。あなたはそれがTryParseExact明示日付書式を渡す失敗する場合

+0

私はその日付形式を認識しません。 4,5、および02はどういう意味ですか? –

答えて

9

TryParseおよびParseは、比較的寛大であり、私が個人的に好む傾向があるよりも緩やかです。

より厳密な解析プロセスが必要な場合は、DateTime.TryParseExactを使用します。

+0

var formats = new [] {"yyyy-MM-dd"、 "yyyy-MM-dd HH:mm:ss"、 "yyyy-M-d"、 "yyyy-M-d HH:mm:ss"、}; DateTime dt; (DateTime.TryParseExact(s、formats、CultureInfo.InvariantCulture、DateTimeStyles.None、out dt)) MessageBox.Show(dt.ToString( "yyyy-MM-dd HH:mm:ss")); else MessageBox.Show( "エラー日付!"); – flyingnn

+0

これに変更、良い! – flyingnn

4

は、そうでない場合DateTimeは、あなたの日付が意味するかもしれないもので最良の推測を取り、それを吐き出すます。

+2

TryParseにフォーマットを指定することはできません。フォーマットプロバイダだけですが、これは全く同じではありません。 –