1

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

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

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

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

4

3 回答 3

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));
于 2013-09-02T04:29:05.000 回答
4

更改您的代码以ParseExact改用。它通过异常崩溃为您提供了确切的问题:

String was not recognized as a valid DateTime because the day of week was incorrect.

2013 年 4 月 27 日是星期六,而不是星期日。

于 2013-09-02T04:29:58.390 回答
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);
于 2013-09-02T04:34:24.127 回答