日期时间格式无法识别

时间:2014-08-14 20:54:11

标签: c# .net datetime datetime-format

我有一个日期需要进入DateTime对象。在我的下面的代码中,我将filedate设置为我获得的日期字符串,然后尝试两种不同的格式(paternpatern2。它无法识别格式并始终属于else阻止,我没有得到datetime对象,因为我需要它。我使用在this page.上的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
}

1 个答案:

答案 0 :(得分:3)

三个问题:

  • 你的两个模式链是相同的 - 为什么要尝试它们?
  • hh表示12小时制的小时; 16不是有效值
  • 您应该将CDT部分视为文字

我怀疑你想要:

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

此外,如果这始终是英文,您可能想要使用CultureInfo.InvariantCulture

最后,我怀疑这只会在夏天有效......冬天我猜你会CST而已。不幸的是,这是一种可怕的格式......您可能希望在解析之前使用字符串操作去除CST / CDT(或者它是什么 - 它总是中心时间吗?)。据我所知,没有人支持解析这些。