我试图在一个usa服务器上解析这个日期时间,但是它不起作用:
string foo = "13 Lug 2013 14:15";
DateTime arrivalDateConfirmed = DateTime.ParseExact(foo, "dd MMM yyyy HH:mm", new CultureInfo("it-IT"));在我的意大利测试机器上。
发布于 2013-07-24 01:12:09
试着转义分号:
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是“。性格。如果不希望将自定义格式说明符字符转换为区域设置等效字符,请转义自定义格式说明符,如下所示:http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#escape
发布于 2013-07-24 00:29:37
您需要将当前线程的区域性设置为意大利语,以便它知道解析意大利日期,而不是解析当前设置的美国日期。您也不需要使用ParseExact,只需使用Parse()即可。当您完成对文化敏感的代码时,一定要将其设置回原处。
string foo = "13 Lug 2013 14:15";
Thread.CurrentThread.CurrentCulture = new CultureInfo("it-IT");
DateTime.Parse(foo);
Console.WriteLine(foo);https://stackoverflow.com/questions/17823188
复制相似问题