我有一个日期需要进入DateTime
对象。在我的下面的代码中,我将filedate
设置为我获得的日期字符串,然后尝试两种不同的格式(patern
和patern2
。它无法识别格式并始终属于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
}
答案 0 :(得分:3)
三个问题:
hh
表示12小时制的小时; 16不是有效值CDT
部分视为文字我怀疑你想要:
"ddd MMM d HH:mm:ss 'CDT' yyyy";
此外,如果这始终是英文,您可能想要使用CultureInfo.InvariantCulture
。
最后,我怀疑这只会在夏天有效......冬天我猜你会CST
而已。不幸的是,这是一种可怕的格式......您可能希望在解析之前使用字符串操作去除CST / CDT(或者它是什么 - 它总是中心时间吗?)。据我所知,没有人支持解析这些。