我正在从日志文件中读取一个字符串,其日期值如下:
Thu Oct 06 15:38:45 2016
显然
DateTime.TryParse()...
不会处理。所以,我尝试使用
DateTime.TryParseExact()
像这样:
string szDateFormat = "ddd MMM yy HH:mm:ss yyyy";
string szTest = "Thu Oct 06 15:38:45 2016";
DateTime dd;
DateTime.TryParse(szTest, out dd);
CultureInfo current = CultureInfo.CurrentCulture;
CultureInfo newculture = new CultureInfo("en-US");
Console.WriteLine(current);
Console.WriteLine(newculture);
Console.WriteLine(String.Format(" Test: {0}", szTest));
Console.WriteLine(String.Format("Format: {0}", szDateFormat));
Console.WriteLine(String.Format(" dd: {0:ddd MMM yy HH:mm:ss yyyy}", dd));
Console.WriteLine("");
DateTime.TryParseExact(szTest, szDateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dd);
Console.WriteLine(String.Format(" Test: {0}", szTest));
Console.WriteLine(String.Format("Format: {0}", szDateFormat));
Console.WriteLine(String.Format(" dd: {0:ddd MMM yy HH:mm:ss yyyy}", dd));
Console.WriteLine("");
结果如下:
en-US
en-US
Test: Thu Oct 06 15:38:45 2016
Format: ddd MMM yy HH:mm:ss yyyy
dd: Mon Jan 01 00:00:00 0001
Test: Thu Oct 06 15:38:45 2016
Format: ddd MMM yy HH:mm:ss yyyy
dd: Mon Jan 01 00:00:00 0001
在上一次迭代中,我使用了
CultureInfo.CurrentCulture
同样没有变化。
任何帮助都将不胜感激。
谢谢, 约翰
答案 0 :(得分:2)
当您使用06
时,您尝试使用yy
解析数字日(dd
):
ddd MMM dd HH:mm:ss yyyy
答案 1 :(得分:2)
我认为这是问题所在:
string szDateFormat = "ddd MMM yy HH:mm:ss yyyy";
string szTest = "Thu Oct 06 15:38:45 2016";
格式应为:
ddd MMM dd HH:mm:ss yyyy
如果你想解析:
Thursday 06.10.2016 15:38:45
第三个参数yy
应为dd
,因为它会与最后一个参数yyyy
发生冲突。 yy
指向2006年,但yyyy
指的是2016年。这将为解析器造成混淆。
答案 2 :(得分:1)
我认为您的日期格式不正确“ddd MMM yy HH:mm:ss yyyy”必须
"ddd MMM dd HH:mm:ss yyyy"
答案 3 :(得分:0)
我的两分钱: