0

"yyyyMMddHHmmss"を使用してフォーマットの文字列タイムスタンプを解析しようとしていますDateTime.ParseExact()。キャッチは、「24」の時間値を許可する必要があることです(つまり、時間は0〜24で、24時間は翌日の0時間(日+ 1、時間= 0)を示します)注:制御できません入力値。)そしてもちろん、それは例外になります。
正規表現を手動で解析/使用する代わりに設定できる設定/プロパティはありますか?そうでない場合、効率的な構文解析のアイデアはありますか?

元。

DateTime.ParseExact("20120911240000", "yyyyMMddHHmmss", 
   System.Globalization.CultureInfo.InvariantCulture);
4

3 に答える 3

3

手動で実行する場合は、String.Substring ()を使用して「24」の時間値を検出し、次にString.Replaceを使用して「00」に設定し、日付を解析して、その場合は日を追加します。 「24」の時間値はどういう意味ですか

于 2012-09-11T21:28:54.190 に答える
1

サムの解決策は良いですが、あなたが使用しているので、yyyyMMddHHmmss私は次のようなことをします:

bool addDay = false;
DateTime result;
string dtToParse = "20120911240000";

if (dtToParse[8] == '2' && dtToParse[9] == '4')
{
    dtToParse = dtToParse.Substring(0, 8) + "00" + dtToParse.Substring(10);
    addDay = true;
}

result = DateTime.ParseExact(dtToParse, "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture);

if (addDay) { result = result.AddDays(1); }
于 2012-09-11T22:22:38.060 に答える
0

あなたがやりたいことをするための簡単な旗はありません。

ただし、カスタム日時パーサーを作成する方法は次のとおりです。

DateTimeのカスタムIFormatProviderを作成して使用するにはどうすればよいですか?

于 2012-09-11T21:35:43.653 に答える