2012-04-26 8 views
7

DateTime.ParseがDateTime.Parse DD/MM/YYYY 24時制

15/08/2000 16:58 

上の任意の考えを失敗しましたか?

私は日付を解析し、国際化を行う必要があります。 24時間時計

15/08/2000 16:58を受け入れる

DD/MM/YYYYには、24時間時計

MM/DD/YYYYにフロップではないでしょうから、

を解析します私が他の文化を使って見たキッビーの答え。 私はそれがdd/MMであるかどうかを判断するためにRegexを使用し、そうであれば文化fr-FRを使用します。

+0

正しい文化を指定していますか? –

+0

私の現在の文化はen-USです。私が言ったように、いくつかは国際的です。 – Paparazzi

答えて

26

DateTime.ParseExact()をお試しください:パースを呼び出すとき

var result = DateTime.ParseExact(dateString, 
           "dd/MM/yyyy HH:mm", 
           new CultureInfo("en-US")); 
11

日付が正しく表示されることがわかっている場合は、おそらくDateTime.ParseExactを使用して日付を解析する必要があります。

string dateString, format; 
DateTime result; 
CultureInfo provider = CultureInfo.InvariantCulture; 

dateString = "15/08/2000 16:58" 
format = "dd/MM/yyyy HH:mm" 
result = DateTime.ParseExact(dateString, format, provider); 

上記に変更してください。 HHは24時間を意味するため、hhをHHに変更しました。先頭のゼロを使用しない場合は、単にHを使用します。フォーマット文字列の作成の詳細については、see this articleを参照してください。

また、リンクされたMSDNの記事から、 "g"という形式が動作するように見えます。

dateString = "15/06/2008 08:30"; 
format = "g"; 
CultureInfo provider = new CultureInfo("fr-FR"); 
DateTime result = DateTime.ParseExact(dateString, format, provider); 
+0

問題は私がフォーマットを知らないことです。私は文字通り、電子メールから数百万の日付を解析しています。あなたの答えを試してみましょう。 – Paparazzi

+1

フォーマットがわからない場合、2008年10月11日または2008年11月10日のいずれかを意味する可能性があるため、正確さに問題があります。どちらの日付フォーマットも非常に人気があります。 – Kibbee

+0

しかし、私は正確ではないが一貫して生きることができます。これは電子メールのスレッドです。正確を好むだろう。 – Paparazzi