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