自定义日期格式解析

时间:2012-09-07 04:00:16

标签: c# .net datetime

我有一些从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月之间的双倍空格

3 个答案:

答案 0 :(得分:4)

  

前两个日期工作,但最后一个不会。

那是因为您使用dd作为日期,返回的最后日期是6而不是06.使用单d。如果返回的最后日期是06,那么您的格式就像魅力一样。

它应该像

DateTime.ParseExact(timestring, "MMM d H:mm", provider);

答案 1 :(得分:2)

使用一个d,以便可能single-digit days(即“6”而不是“06”)。

MMM d H:mm

答案 2 :(得分:2)

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