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

时间:2013-08-07 18:48:51

标签: c# .net 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."

工作得很好......

DateTime.Now.ToString("dddd٫ d MMM٫ yyyy", new CultureInfo("ar"));
// "الأربعاء٬ 30 رمضان٬ 1434"

似乎工作正常。

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

然后是中国人:

DateTime.Now.ToString("yyyy年M月d日dddd", new CultureInfo("zh-CN"))
// "2013年8月7日星期三"

Chinese numerals似乎比仅仅做一个简单的替换要复杂得多;有时一个角色变为2。 接下来,格式化日期似乎显示当前的格里高利日期,而不是current Chinese date

所以我的问题是:

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

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

2 个答案:

答案 0 :(得分:0)

请参阅以下问题(和答案):

关于这是否适用于所有语言? ......我不会赌它,尤其是像中国那样有多种方式和背景敏感用途的文化。

答案 1 :(得分:0)

使用ToLongDateString()

进行游戏
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("zh-CN");
var myDate = DateTime.Now.ToLongDateString();

myDate的价值:2013年8月7日