Ros*_*oss 6 .net globalization datetime cultureinfo
我目前正在进行项目的全球化进程(.net mvc2应用程序),全球化对我来说有点新鲜.我注意到DateTime.ToString()在为某些文化格式化时,可能会导致过去或将来的值太过ArgumentOutOfRangeException.特别是,用于"ar"和"ar-SA"(UmAlQuraCalendar)的日历具有非常有限的最小和最大支持日期.使用UmAlQuraCalendar时,1930年4月之前或2029年5月之后的任何日期都会导致此问题.这很容易观察到:
DateTime.ParseExact("1900", "yyyy", CultureInfo.InvariantCulture).ToString("G", new CultureInfo("ar"));
Run Code Online (Sandbox Code Playgroud)
请原谅我对这个问题的无知,但我想知道这里的最佳做法是什么.如果我可以在1930年之前表示日期而不必在每次打印日期时添加异常处理,我希望如此,但我也想尊重用户的文化.这是切换这些文化的日历的最佳选择吗?从一些谷歌搜索看来,可选提供的HijriCalendar与UmAlQuraCalendar非常相似,但是具有更宽松的最小和最大支持日期.这是很多人遇到的问题吗?我对这个特殊问题没有多少建议.如果没有一些建议,我会犹豫是否只是随心所欲地改变这些文化中使用的默认日历.
为了获得全球化的最佳结果,请在应用程序的所有区域中严格遵守文化不变的数据表示,表示层(人机交互)除外;并在表示层中为需要呈现给人类或由人类直接输入的所有内容添加一致的翻译层。
具体而言,关于日历:许多全球应用程序严格遵守公历(尽管人类可见的格式当然是本地化的);有些确实支持在某些国家/地区具有官方地位的其他一些日历,但话又说回来,这是在表示层上实现的,对应用程序的影响最小,并且只有在满足这些市场的实际情况时,或者甚至在生产部署之后该地区已经启动。
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |