代码之家  ›  专栏  ›  技术社区  ›  Gaddigesh

保存在en-US区域性中的dateTimeString在fr-fr区域性中解析时引发格式异常

  •  0
  • Gaddigesh  · 技术社区  · 12 年前

    我正在将DateTime转换为美国文化中的字符串。

    dateTimeString=dateTime.ToString();

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

    DateTime.Passe(dateTimeString,CultureInfo.CurrentCulture);

    它抛出FormatException。

    我错过了什么?

    2 回复  |  直到 12 年前
        1
  •  2
  •   jglouie    12 年前

    是的,这将是一个问题。

    常规 ToString() 在DateTime上,将生成这样的日期字符串,用于 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 总体安排

        2
  •  1
  •   Community PPrice    7 年前

    作为 jglouie 表示无法解析不同区域性中的日期时间字符串。

    您将不得不使用“en-US”来解析它。

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

    别无选择。

    最好的解决方案可能是在转换 DateTime string 并且在解析 一串 回到 日期时间 。无论运行应用程序的计算机的设置如何,这都将为您提供一致的结果。