30

syslog メッセージを受信して​​データベースに保存する syslog サーバーを作成しています。

メッセージで受信した日付文字列を構造に解析しようとしていますDateTime

次の例では、わかりやすくするために空白の代わりにアンダースコアを使用します。受信した実際の文字列にはスペースが含まれています。

受け取った文字列は の形式です"Jun__7_08:09:10"。月と日の間にある 2 つの空白に注意してください。

日が 10 日以降の場合、文字列は"Jun_10_08:09:10"(1 つの空白) になります。

私が解析した場合:

DateTime.ParseExact(Log.Date, "MMM  d HH:mm:ss", CultureInfo.InvariantCulture);

1 番目から 9 番目までの文字列に対して機能しますが、10 番目から例外をスローします。1 つのスペースで解析すると、1 番目から 9 番目まで例外がスローされます (そして 10 番目以降は機能します)。

この文字列を解析する正しい方法は何ですか?

4

5 に答える 5

3

最初に余分なスペースを削除してから、文字列を解析できます。

DateTime.ParseExact(Log.Date.Replace("  ", " "), "MMM d HH:mm:ss", CultureInfo.InvariantCulture);
于 2013-06-07T13:11:05.293 に答える