2013-08-21 25 views
10

以下のコードブロックのTryParseExactメソッドtrueが返されます。
私はその理由を知りたいです。
この日付は"2013.03.12"はスラッシュで区切られていないため無効だと思います。TryParseExactはfalseを返しますが、理由はわかりませんが

CultureInfo"de-De""en-US"に変更した後、このメソッドはfalseを返します。これはヒントかもしれませんが、なぜこれが起こるのかまだ分かりません。

var format = new string[] { "yyyy/MM/dd" }; 
var parsed = new DateTime(); 
var result = DateTime.TryParseExact("2013.03.12", format, 
      new CultureInfo("de-DE"), DateTimeStyles.None, out parsed); 
+0

ところで: '2013.03.12'は、通常の有効/ドイツ語の日付形式ではありません。 '12.03.2013'はそうだろう。 –

答えて

17

私はあなたの現在のDateSeparator.(ドット)と/自動にそれに自分自身を交換だと思います。

/区切り文字は、「現在のカルチャの日付の区切りを私に置き換え

CultureInfo c = new CultureInfo("de-DE"); Console.WriteLine(c.DateTimeFormat.DateSeparator); //Prints . (dot) 

The "/" Custom Format Specifier

+3

非常に興味深い、それを知らなかった –

+0

@ lazyberezovskyええ、私はこれもティムSchmelter [ポイント](http://stackoverflow.com/questions/17526239/converting-datetime-to-string/17526314) #comment25485437_17526239)この状況はほぼ1カ月前です。 –

+1

ありがとうございました。時には、この仕様書では国によってフォーマットを定義する必要はありません。 – Nigiri

7

を見てみましょう@SonerGönülpoints out/をとしたときのように特別な意味を持っています「日付区切り記号」はcustom format stringsです。あなただけ/文字を受け入れるようにしたい場合は、それらをエスケープする必要があります:

var format = new string[] { @"yyyy\/MM\/dd" }; 
+3

@@の前に " – xanatos

+0

@ xanatos - 良いキャッチ。 –

関連する問題