Datetime.ParseExact不起作用

时间:2013-09-02 04:16:28

标签: c#

这可能是其中一个愚蠢的,我错过了一些错误,但在这里它。

我有一个字符串格式的日期时间(没有尾随或前导空格)

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); 

希望有人可以快速告诉我这里我做错了什么。

3 个答案:

答案 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

检查此屏幕截图

enter image description here

这是你的代码:

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);