我正在将DateTime转换为en-US文化中的字符串。
dateTimeString = dateTime.ToString();
但是,如果我在fr-FR文化中启动我的应用程序并尝试使用以下语句进行解析
DateTime.Parse(dateTimeString,CultureInfo.CurrentCulture);
抛出FormatException。
我遗失了什么?
答案 0 :(得分: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
。
编辑:
日期/时间可能会有点痛苦。对于可移植性(跨文化格式和时区),如果您需要序列化为字符串,我建议您使用ISO 8601
格式进行序列化。
答案 1 :(得分:1)
如jglouie所述,您无法解析不同文化中的日期时间字符串。
您将不得不使用“en-US”解析它。
DateTime.Parse(dateTimeString, CultureInfo.CreateSpecificCulture("en-US"));
除此之外别无他法。
最佳解决方案可能是在将DateTime
转换为string
时以及将string
转换回DateTime
时使用不变文化。无论运行应用程序的计算机的设置如何,这都将为您提供一致的结果。