2017-07-16 86 views
0

我想支持欧洲格式文化的英语。CultureInfo。数量和日期欧洲格式,英语语言支持?

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

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

我想在我的申请目前状态支持en-US和(如果有这样的事情)en-EU。有任何想法吗?我需要创建一个自定义文化吗?任何指针?

回答

0

在我们的应用,所有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); 

这种方法的最大优点是,你可以创建你自己的喜好,尽管作为什么别人的思想逻辑并且这些方法支持自定义用户设置。

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

+0

谢谢你的回答。尽管如此,即使我询问用户有关其显示数字和货币的方式,但日期也存在问题...... 2017年7月20日星期四,美国时间2017年7月20日,星期四,美国时间美国时间上午7:24 ,在欧盟19:24(不是PM,AM)。有关这些的任何想法? – Panos

+0

@Panos同样的解决方案,不同的技术。包括用于在用户的区域设置中显示日期的格式。它通常由3个元素组成: 1.显示星期几,显示星期几,星期几的缩写。 (Excel中的长期日期) 2.是否显示上午/下午时间,数字时间或没有时间。 3.什么格式显示日期(2017/07/13,2017/13/07或2017年7月13日 )将这三个字符串区域设置值合并到正确的.ToString()模板值中,然后简单地把它传递给任何方法将日期转换为字符串。 – Chrotenise