我有一个MVC 4应用程序,拥有国际用户(遍布世界各地)。我想添加一个名为配置文件设置的新页面,用户可以在其中选择他们的区域设置,我的意思是他们应该能够选择:
- time zone (UTC +- .....)
- date format (dd.MM.yyyy or dd/MM/yyyy or MM/dd/yyyy ....)
- time format (12/24 - AM PM)
- number format (1234.56 or 1234,56)
用户选择其区域设置后,所有特定数据(日期、时间、数字…)都应以该特定格式显示。
有什么建议吗?
大多数时候,您不应该向用户公开区域性格式的每一个细节。相反,请提供您想要支持的区域性的下拉列表。区域性是使用代码指定的。一些常见的代码是en-US
(英语/美国)、es-MX
(西班牙语/墨西哥)和de-DE
(德国/德语)。第一部分是指语言,第二部分是指具体的国家或地区。
一旦您选择了区域性代码,就可以将其应用于每个用户,例如:
CultureInfo culture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = culture;
如果您正在使用特定于区域性的资源文件,那么您还需要:
Thread.CurrentThread.CurrentUICulture = culture;
有几个地方可以这样做,但一个常见的位置是global.asax文件中的Application_BeginRequest
事件。
MSDN上有一个很好的教程。
虽然在考虑地区设置时,考虑时区是很常见的,但它们实际上是完全不同的,应该单独考虑。时区不能真正全局设置,您需要考虑它们如何影响您在每个使用日期和时间的地方的应用程序逻辑。您应该研究TimeZoneInfo
类。如果您有问题,请单独提问。尽管如果你搜索,你可能会发现很多已经被回答了。