在C#/ .NET中格式化其他语言环境中的数字和日期

Amy*_*Amy 7 .net c# localization digit

在我正在编写的应用程序中,我想用英语显示当前日期和时间,但也要在其他语言环境中显示.

例如俄语,阿拉伯语和中文.

// DateTime.ToLongDateString doesn't support a IFormatProvider parameter
DateTime.Now.ToString("dddd, d MMMM, yyyy", new CultureInfo("en-US"));
// "Wednesday, 7 August, 2013"

DateTime.Now.ToString("dddd, d MMMM, yyyy 'r.'", new CultureInfo("ru-RU"));
// "?????, 7 ???????, 2013 r."
Run Code Online (Sandbox Code Playgroud)

工作良好...

DateTime.Now.ToString("dddd? d MMM? yyyy", new CultureInfo("ar"));
// "????????? 30 ?????? 1434"
Run Code Online (Sandbox Code Playgroud)

似乎工作正常.

但是......我想将数字显示为(东方)阿拉伯数字,而不是拉丁文/阿拉伯数字.虽然这当然可以通过简单的替换('0'到'0',1到'1'等)来解决.

但后来有中文:

DateTime.Now.ToString("yyyy?M?d?dddd", new CultureInfo("zh-CN"))
// "2013?8?7????"
Run Code Online (Sandbox Code Playgroud)

中文数字似乎比仅仅做一个简单的替换要复杂得多; 有时一个字符变成2.在那旁边,格式化的日期似乎显示当前的格里高利日期,而不是当前的中国日期.

所以我的问题是:

A).NET/C#中是否有任何本地化功能可以在其他数字系统中显示数字(特别是日期)?

B)我可以强制.NET/C#在中文(可能还有日文和其他)日历中显示日期,因为它似乎与阿拉伯语日历有关吗?

Nic*_*rey 0

请参阅这些问题(和答案):

至于这是否适用于所有语言?...我不会打赌,特别是在像中国这样的文化中,那里有多种方式和上下文相关的用法。