2

我试图在美国服务器上解析这个日期时间,但它不起作用:

string foo = "13 Lug 2013 14:15";
DateTime arrivalDateConfirmed = DateTime.ParseExact(foo, "dd MMM yyyy HH:mm", new CultureInfo("it-IT"));

在我的意大利测试机上工作。

4

2 回答 2

3

尝试转义分号:

DateTime arrivalDateConfirmed = DateTime.ParseExact(foo, "dd MMM yyyy HH\\:mm", new CultureInfo("it-IT"));

您可以在此处找到更多信息:http: //madskristensen.net/post/Quirk-in-the-DateTime-class.aspx

解释是“:”字符被认为是自定义格式说明符而不是文字字符,在这种情况下是时间分隔符。解析器将尝试将此分隔符转换为指定的文化。在这种情况下,it-IT 的时间分隔符是“.”。特点。如果您不希望将自定义格式说明符字符转换为等效的语言环境,则应转义它们,如下所述:http: //msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#escape

于 2013-07-24T01:12:09.047 回答
-1

您需要将当前线程的文化设置为意大利语,以便它知道解析意大利日期而不是当前设置的美国日期。您也不需要使用 ParseExact,只需使用 Parse()。完成对文化敏感的代码后,请务必将其重新设置。

string foo = "13 Lug 2013 14:15";
Thread.CurrentThread.CurrentCulture = new CultureInfo("it-IT");
DateTime.Parse(foo);
Console.WriteLine(foo);
于 2013-07-24T00:29:37.040 回答