这可能是其中一个愚蠢的,我错过了一些错误,但在这里它。
我有一个字符串格式的日期时间(没有尾随或前导空格)
Sun 27 Apr 2013 7:30pm
我使用此代码将其转换为DateTime变量,但它始终返回false
DateTime date;
bool dateParsed = false;
CultureInfo provider = CultureInfo.InvariantCulture;
dateParsed = DateTime.TryParseExact(when, "ddd d MMM yyyy h:mmtt", provider, DateTimeStyles.AssumeLocal, out date);
希望有人可以快速告诉我这里我做错了什么。
答案 0 :(得分:13)
因为2013年4月27日星期六而不是星期天。如果你试图解析
Sat 27 Apr 2013 7:30pm
它应该工作。您可以通过使用相同的格式打印日期,并将其与您尝试解析的内容进行比较来查看。
bool dateParsed = false;
DateTime date;
CultureInfo provider = CultureInfo.InvariantCulture;
string when = "Sat 27 Apr 2013 7:30pm";
dateParsed = DateTime.TryParseExact(when, "ddd d MMM yyyy h:mmtt", provider, DateTimeStyles.AssumeLocal, out date);
Console.WriteLine(date);
date = new DateTime(2013, 4, 27, 19, 30, 00, DateTimeKind.Local);
Console.WriteLine(date.ToString("ddd d MMM yyyy h:mmtt", provider));
答案 1 :(得分:4)
将代码更改为使用ParseExact
。它通过崩溃异常提供了确切的问题:
String was not recognized as a valid DateTime because the day of week was incorrect.
2013年4月27日是星期六,而不是星期天。
答案 2 :(得分:0)
问题是您的日期,这是无效的。改变它
Sat 27 Apr 2013 7:30pm
检查此屏幕截图
这是你的代码:
DateTime date;
bool dateParsed = false;
CultureInfo provider = CultureInfo.InvariantCulture;
string when = "Sat 27 Apr 2013 7:30pm";
dateParsed = DateTime.TryParseExact(when, "ddd d MMM yyyy h:mmtt", provider, DateTimeStyles.AssumeLocal, out date);