2

このようにFTPサーバーから日付が返されました

Aug 28 11:03
Aug 28 18:06
Sep  6 16:03

このコードを使用して時間を解析しています

CultureInfo provider = new CultureInfo("en-US");
_fileDateTime = DateTime.ParseExact(timestring, "MMM dd H:mm", provider);

最初の2つの日付は機能しますが、最後の日付は機能しません。この種の日付形式を解析する上で、より良いアイデアを持っている人はいますか?

MMM d H:mmで動作しSep 6 16:03ますが、私の場合は動作しSep 6 16:03ません。9月と6の間の2つのスペースに注意してください。

4

3 に答える 3

4

最初の2つの日付は機能しますが、最後の日付は機能しません。

これは、日付に使用ddしていて、最後に返される日付が06ではなく6であるためです。Singleを使用してくださいd。返された最後の日付が06だった場合、あなたのフォーマットは魅力のように機能したでしょう。

それは次のようになります

DateTime.ParseExact(timestring, "MMM d H:mm", provider);
于 2012-09-07T04:03:11.980 に答える
2

1桁の日数dが予想されるように、1つを使用します(つまり、「06」ではなく「6」)。

MMM d H:mm
于 2012-09-07T04:01:31.197 に答える
2

複数の問題があります。1つは他の回答ですでに指摘されている問題です。つまりd、最後の日付がそうでは6ないため、日付に単一を使用します06。最終日付に関するもう1つの問題は、単一のスペースで日付を処理するフォーマットが機能していないために、日付と月の間に複数のスペースがあることです。最初に余分なスペースを削除してから、単一のフォーマットを使用して解析する必要がありますd。次のコードを試してください。

    string timestring = "Sep  6 16:03";
   //string[] array = timestring.Split(" ".ToCharArray(),StringSplitOptions.RemoveEmptyEntries);
   //timestring = string.Join(" ", array);
    timestring = System.Text.RegularExpressions.Regex.Replace(timestring, @"\s+", " ");

    CultureInfo provider = new CultureInfo("en-US");
    DateTime _fileDateTime = DateTime.ParseExact(timestring, "MMM d H:mm", provider);
于 2012-09-07T04:23:29.283 に答える