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);

前两个日期有效,但最后一个不会。有没有人在解析这种日期格式方面有更好的想法?

MMM d H:mm可以使用,Sep 6 16:03但在我的情况下它Sep 6 16:03不起作用,请注意 9 月和 6 日之间的双倍空格

4

3 回答 3

4

前两个日期有效,但最后一个不会。

那是因为您使用ddfor date 并且返回的最后一个日期是 6 而不是 06。使用 Single d。如果最后返回的日期是 06,那么您的格式会很有效。

它应该像

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

使用一个d,以便它预期可能的个位数天数(即,“6”而不是“06”)。

MMM d H:mm
于 2012-09-07T04:01:31.197 回答
2

多个问题,一个是已经在其他答案中指出的问题,即使用单一d日期,因为上次日期6不是06。最后一个日期的另一个问题是它在日期和月份之间有多个空格,因为您处理单个空格日期的格式不起作用。您需要先删除多余的空间,然后使用带有 single 的格式进行解析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 回答