4

既存の実装には次のコード行があります

DateTime.TryParseExact(
    "15/11/2021 00:00:00", 
    "dd/MM/yyyy HH:mm:ss",
    null,
    DateTimeStyles.None,
    out maturityDate);

これはfalse、渡された文字列を解析できなかったことを意味します。ここのパターンは正確に見えるので、これは私にとって本当に驚きでした。3番目のパラメーター内のMSDN値によるとnull、現在のカルチャ情報が使用されることを意味します(私はそれが使用されると思いますThread.CurrentThread.CurrentCulture)。

Thread.CurrentThread.CurrentCultureウォッチウィンドウにはen-USがありますが、カルチャ情報のインスタンスは後でコードのどこかで変更されました(日時フォーマッターなど)。

私が合格CultureInfo.InvariantCultureするか、new CultureInfo("en-US")すべてが大丈夫なとき。

合格しTryParseExactたときにここで失敗する原因を誰かが言ってもらえますか?null同様の質問は私には何の手がかりも与えませんでした。

4

2 に答える 2

7

を渡すnullと、CurrentCultureが使用されます。

のMSDNドキュメントからTryParseExact

provider が Nothing の場合、現在のカルチャに対応する CultureInfo オブジェクトが使用されます。

これは、現在のカルチャが文字列とは異なる日付/時刻区切り記号を使用するものである場合、解析が失敗することを意味します。

于 2012-01-11T14:28:55.283 に答える
0

15/11/2021 は有効な米国の日付形式ではありません。2021年11月15日です。あなたが望む文化en-GB

于 2012-01-11T14:43:16.637 に答える