12

DateTime.Parse 失败

 15/08/2000 16:58

有什么想法吗?

我需要解析日期并获得一些国际数据。

DD/MM/YYYY 不会翻转到 24 小时制

MM/DD/YYYY 将接受 24 小时制

2000 年 8 月 15 日下午 4:58 将解析

从 Kibbee 的回答中,我看到了使用其他文化。我使用正则表达式来确定它是否是 dd/MM,如果是,则使用文化 fr-FR。

4

2 回答 2

36

尝试DateTime.ParseExact()

var result = DateTime.ParseExact(dateString,
                                 "dd/MM/yyyy HH:mm",
                                 new CultureInfo("en-US"));
于 2012-04-26T00:51:47.860 回答
13

如果您知道您期望日期的确切格式,您可能应该使用DateTime.ParseExact来解析日期。出于您的目的,以下内容可能会起作用。

string dateString, format;  
DateTime result;
CultureInfo provider = CultureInfo.InvariantCulture;

dateString = "15/08/2000 16:58"
format = "dd/MM/yyyy HH:mm"
result = DateTime.ParseExact(dateString, format, provider);

改到上面。将 hh 更改为 HH 因为 HH 表示 24 小时制。如果您不使用前导零,则只需使用 H。有关创建格式字符串的更多信息,请参阅本文

同样来自链接的 MSDN 文章,看起来格式“g”应该可以工作。

dateString = "15/06/2008 08:30";
format = "g";
CultureInfo provider = new CultureInfo("fr-FR");
DateTime result = DateTime.ParseExact(dateString, format, provider);
于 2012-04-26T00:49:08.680 回答