1

次のコードがあります。

string[] format = { "yyyy/MM/dd", "MM/dd/yyyy" };
DateTime valueDate;
value = value.Replace("-", "/");
if (DateTime.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out valueDate))
{
    value = "TO_DATE(" + valueDate + ", 'yyyy-mm-dd')";
}
else
{
    throw new Exception("Could not parse incoming date: " + valueDate);
}

だから今、私はテストケースを持っています。そして value = '2013/01/21' は、"-" を "/" に置き換えた replace ステートメントの後です。

これは、フォーマット文字列配列の最初のフォーマットと一致する必要があります。しかし、TryParseExact は機能しておらず、常に else パスに移動します。このコードにエラーが表示されることはありますか?

4

2 に答える 2

0

それがあなたの問題かどうかはわかりませんが、日付形式を使用するときは常にスラッシュをエスケープするようにしてください。文字は文字通りの/スラッシュではなく、ローカル システムの日付区切り文字です (通常はスラッシュですが、常にではありません)。

フォーマット文字列を使用する場合、次のようにスラッシュを実際のバックスラッシュでエスケープします。

DateTime.ParseExact("2012/12/31", "yyyy\\/MM\\/dd", null);
// or
DateTime.ParseExact("2012/12/31", @"yyyy\/MM\/dd", null);
于 2013-05-29T13:59:28.630 に答える