在美国服务器上解析意大利日期

时间:2013-07-24 00:20:05

标签: c# parsing datetime culture

我正在尝试在美国服务器上解析此日期时间,但它不起作用:

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-1)

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

string foo = "13 Lug 2013 14:15";
Thread.CurrentThread.CurrentCulture = new CultureInfo("it-IT");
DateTime.Parse(foo);
Console.WriteLine(foo);