0

我正在将 DateTime 转换为 en-US 文化中的字符串。

dateTimeString = dateTime.ToString();

但是,如果我在 fr-FR 文化中启动我的应用程序并尝试使用以下语句进行解析

DateTime.Parse(dateTimeString, CultureInfo.CurrentCulture);

它抛出 FormatException。

我错过了什么?

4

2 回答 2

2

是的,这将是一个问题。

DateTime 上的常规ToString()将生成这样的日期字符串,用于en-US

"8/26/2012 8:54:16 PM"

因为fr-FR它会生成这个:

"26/08/2012 20:54:16"

因此,如果您尝试将第一个字符串(en-US)解析为 fr-FR 日期时间字符串,则 26 将被视为无效月份,并且FormatException预期为 a。

编辑:日期/时间可能有点痛苦。对于可移植性(跨文化格式和时区),如果您需要序列化为字符串,我建议以ISO 8601格式序列化。

于 2012-08-26T20:59:09.897 回答
1

正如jglouie所说,您无法解析不同文化中的日期时间字符串。

您将不得不使用“en-US”对其进行解析。

DateTime.Parse(dateTimeString, CultureInfo.CreateSpecificCulture("en-US"));

没有其他方法可以绕过它。

最好的解决方案可能是在将 a 转换DateTime为 astring并将stringback解析为 a 时使用不变的文化DateTime。无论运行应用程序的计算机的设置如何,这都会为您提供一致的结果。

于 2012-08-26T21:03:56.023 回答