2

我从网络服务中得到一个这样写的日期:

"Tuesday, November 12, 2013 8:18:14 AM PST"
or
"Tuesday, November 12, 2013 10:36:03 AM PST"
or 
"Wednesday, November 13, 2013 5:15:58 AM PST"
...

这个日期存储在一个数组中,我想对其进行排序。但它不能正常工作。所以我想以 DateTime 或该语言支持的其他格式存储这个书面日期。不如重新排序。与使用 strstr 或类似的东西相比,我也可以更容易地从 DateTime 获取几天和几小时。

是否可以(以及如何)将此书面日期转换为 DateTime ?

PS:我已经尝试过使用Convert.DateTime("Wednesday, November 13, 2013 5:15:58 AM PST"). 但它没有用。

谢谢

4

3 回答 3

3

你需要用格式解析它"dddd, MMMM d, yyyy h:m:ss tt 'PST'"

string str = "Wednesday, November 13, 2013 5:15:58 AM PST";

DateTime dt = DateTime.ParseExact(str, 
                                "dddd, MMMM d, yyyy h:m:ss tt 'PST'", 
                                CultureInfo.InvariantCulture);

我已经使用 single d, handm来表示日、小时和月,因为它们将同时接受一位数和两位数的值。

于 2013-11-13T15:29:47.777 回答
1

因为Convert.DateTime使用当前的文化信息。

DateTimeFormatInfovalue 参数必须包含以主题中描述的格式之一表示的日期和时间。

您可以改用DateTime.ParseExact自定义日期时间格式的方法。

string s = "Wednesday, November 13, 2013 5:15:58 AM PST";
DateTime dt = DateTime.ParseExact(s, 
                                  "dddd, MMMM d, yyyy h:mm:ss tt 'PST'",
                                  CultureInfo.InvariantCulture);
Console.WriteLine(dt);

输出将是;

11/13/2013 5:15:58 AM

这里一个demonstration.

有关更多信息,请查看;

于 2013-11-13T15:28:19.677 回答
0

如果日期总是以 3 个字母的时区缩写结尾,则以下将起作用:

string str = "Wednesday, November 13, 2013 5:15:58 AM PST";
DateTime date = DateTime.Parse(str.Substring(0, str.Length - 4));
于 2013-11-13T15:31:45.663 回答