10

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

を に変更した後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);
4

2 に答える 2

17

あなたの現在DateSeparator.(ドット)であり、/自動的にそれに置き換えられると思います。

/区切り記号には、「現在のカルチャの日付区切り記号に置き換えてください」という特別な意味があります。

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

Custom Format Specifierを見てください"/"

于 2013-08-21T06:33:09.490 に答える
7

@Soner Gönülが指摘しているように、はカスタム フォーマット文字列/の「日付セパレータ」として使用されます。文字のみを受け入れたい場合は、エスケープする必要があります。/

var format = new string[] { @"yyyy\/MM\/dd" };
于 2013-08-21T06:41:26.540 に答える