【问题标题】:CultureInfo. Number & Date European format with English Language support?文化信息。数字和日期欧洲格式与英语语言支持?
【发布时间】:2017-07-16 16:25:28
【问题描述】:

我想支持欧洲格式文化的英语语言。

日期应使用欧洲格式以英文显示。所以,应该显示“2017 年 7 月 16 日,星期日,14:00”,而不是英国的方式......实际上爱尔兰文化是可以的!

进一步,例如当我需要显示货币时,我希望将其格式化为“1.500,00 €”。现在,为了支持英语,如果我使用英国文化,我会得到井号。如果我使用爱尔兰文化,我会得到“1,500.00 欧元”,这不是欧洲格式化货币的标准方式。

我希望在我目前的申请状态下支持 en-US 和(如果有的话)en-EU。有任何想法吗?我需要创建自定义文化吗?有什么指点吗?

【问题讨论】:

    标签: c# .net asp.net-mvc cultureinfo


    【解决方案1】:

    在我们的应用程序中,所有DateTime 对象都存储在UTC 中,并通过我们框架中的辅助方法转换为适当的表示形式:

    public static string ToString(DateTime? date, string format)
    {
       if (date.HasValue)
          return String.Format("{0:}"+format, date);
       else return "";
    }
    

    从我们存储的语言中检索格式。

    decimal 表示货币的属性也由我们框架中的辅助方法转换。为此,我们使用NumberFormatInfo

            numberFormat = new NumberFormatInfo();
            numberFormat.CurrencyDecimalSeparator = ".";
            numberFormat.CurrencyGroupSeparator = "";
            numberFormat.NumberDecimalSeparator = ".";
            numberFormat.NumberGroupSeparator = "";
    

    然后使用创建的NumberFormatInfo:

    price.ToString(numberFormat);
    

    这种方法的最大优点是您可以创建自己的偏好,尽管其他人认为这是合乎逻辑的,并且这些方法支持自定义用户设置。

    缺点是您需要为您支持的每个国家/地区创建语言和格式。

    【讨论】:

    • 感谢您的回答。尽管如此,即使我询问用户他喜欢显示数字和货币的方式,日期也存在问题......在美国,2017 年 7 月 20 日星期四,在欧盟,2017 年 7 月 20 日星期四。在美国,晚上 7:24 ,在欧盟 19:24(没有下午,上午)。有什么想法吗?
    • @Panos 相同的解决方案,不同的技术。包括用于在用户区域设置中显示日期的格式。它通常由 3 个元素组成: 1. 显示星期几,显示星期几的缩写,没有星期几。 (Excel 中的长日期) 2. 是否以上午/下午、数字时间或无时间显示时间。 3. 以什么格式显示日期(2017/07/13、2017/13/07 或 13/07/2017。将这三个字符串语言环境值组合成正确的 .ToString() 模板值,然后简单地传递它到任何将日期转换为字符串的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多