【发布时间】:2017-08-20 10:55:05
【问题描述】:
我需要解析到以下日期Aug 20 11:38:43 2017 GMT
我正在尝试使用DateTime.TryParseExact,但找不到正确的格式。
我的最新格式是MMM dd hh:mm:ss yyyy
我的代码:
string nextUpdate; //Next Update: Aug 20 11:38:43 2017 GMT
string dateTimeFormat = "MMM dd hh:mm:ss yyyy";
DateTime crldt;
DateTime.TryParseExact(nextUpdate.Split(':')[1].Trim(), dateTimeFormat, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out crldt);
当我运行代码时,我得到 crldt ~ Date = {1/1/01 12:00:00 AM}
我的问题:我应该使用什么格式或者我可以使用什么替代方法将此字符串解析为 DateTime
更新
使用来自@Sergey Berezovskiy 的建议 我已将代码更新为:
string nextUpdate; // Next Update: Oct 7 06:16:18 2017 GMT
string dateTimeFormat = @"MMM dd HH:mm:ss yyyy \G\M\T";
Regex r =new Regex(".*Next Update:.*");
nextUpdate = r.Match(Crltext).Value;
DateTime crldt;
DateTime.TryParseExact(nextUpdate.Substring(nextUpdate.IndexOf(':')+1).Trim(),
dateTimeFormat, System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.AssumeUniversal, out crldt);
int intDTComp = DateTime.Compare(crldt, DT_now);
我发现了一个不符合这种格式的日期:Next Update: Oct 7 06:16:18 2017 GMT
现在有什么问题?
更新 2
我找到了问题,但找不到干净的解决方案。
问题是有问题的日期是 Oct 7 ... ,
而格式是MMM dd ...
我的解决方法是添加另一种格式 MMM d hh:mm:ss yyyy 并在 date = {1/1/01 12:00:00 AM} 时使用它
在这种情况下我可以使用什么其他解决方案
【问题讨论】:
-
你为什么使用
Split()?不就是传递"38"来解析吗?"38"不是日期。还是通过"Aug 20 11"?也不是日期。