在不同的文化中解析日期

时间:2012-10-17 14:58:08

标签: c# locale

我正在开发一种应该从美国客户处使用的软件 在我的电脑上(意大利语)我用

CultureInfo cultureUS = CultureInfo.GetCultureInfo("en-US");
DateTime dt = DateTime.Parse(s, cultureUS);

这适用于像星期六,2012年9月8日这样的字符串 但是当我的软件在客户端PC上使用时,他会收到错误

  

字符串未被识别为有效的DateTime

为什么呢?怎么了?
我应该用它来让它在任何地方都能运作?

修改
为了避免混淆:我从网络和文件中读取这些日期,我需要解析它们然后使用它们(以那种格式)来写一些其他文件。
所以我认为我不需要将它们转换为“标准”格式然后再将它们转换回来:我想从那种格式中使用它们并将它们直接写入文件...
这就是我决定使用我写的代码的原因....

2 个答案:

答案 0 :(得分:0)

您可能需要查看DateTime.ParseExact

CultureInfo cultureInfo = CultureInfo.GetCultureInfo("en-US");
DateTime dateTime = DateTime.ParseExact(s, "D", cultureInfo);

修改

对于确切的时间日期格式,您可以尝试:

DateTime dateTime = DateTime.ParseExact(s, "ddd, MMM dd, yyyy", cultureInfo);

答案 1 :(得分:0)

我不习惯本地化,但也许这可能适合你:

DateTime.Parse(date, new DateTimeFormatInfo()
                         { LongDatePattern = "ddd, MMM dd, YYYY" });

对于我用你的字符串格式抛出的字符串似乎对我有用,但我没有用不同的文化测试它。