无法识别日期时间格式

本文关键字:时间 格式 日期 识别 | 更新日期: 2023-09-27 18:17:59

我有一个需要进入DateTime对象的日期。在下面的代码中,我将filedate设置为我得到的日期字符串,然后尝试两种不同的格式(paternpatern2)。它不能识别格式,总是落在else块,我没有得到datetime对象,因为我需要它。我使用我在本页MSDN上找到的说明符设置了格式字符串。

string filedate = "Tue Aug 12 16:01:29 CDT 2014";
string patern = "ddd MMM d hh:mm:ss CDT yyyy";
string patern2 = "ddd MMM dd hh:mm:ss CDT yyyy";
DateTime dat;
CultureInfo enUS = new CultureInfo("en-US");
string outString = "";
if (DateTime.TryParseExact(filedate, patern, enUS, System.Globalization.DateTimeStyles.None, out dat))
{
    outString = (dat.ToShortDateString() + " " + dat.ToShortTimeString());
}
else if (DateTime.TryParseExact(filedate, patern2, enUS, System.Globalization.DateTimeStyles.None, out dat))
{
    outString = (dat.ToShortDateString() + " " + dat.ToShortTimeString());
}
else
{
    outString = filedate.Trim(); //always falling to here
}

无法识别日期时间格式

三个问题:

  • 你的两个模式字符串是相同的-为什么要同时尝试它们?
  • hh表示12小时制中的小时;16不是一个有效值
  • 您应该转义CDT部分,因为您希望它作为文字

我怀疑你想:

"ddd MMM d HH:mm:ss 'CDT' yyyy";

另外,如果总是使用英语,您可能需要使用CultureInfo.InvariantCulture

最后,我怀疑这只会在夏天有效…在冬天,我猜你会用CST代替。不幸的是,这是一个可怕的格式……在解析之前,您很可能希望使用字符串操作去除CST/CDT(或者其他任何东西——它总是中心时间吗?)据我所知,不支持解析这些