7

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

例如俄语、阿拉伯语和中文。

// 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',1 到 '١' 等等)。

但是还有中文:

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

中文数字似乎比简单的替换要复杂得多;有时一个字符变成 2。旁边,格式化的日期似乎显示当前的公历日期,而不是当前的中文日期

所以我的问题是:

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

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

4

2 回答 2

1

玩 ToLongDateString()

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

myDate 的值:2013 年 8 月 7 日</p>

于 2013-08-07T19:16:50.637 回答
0

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

至于这是否适用于所有语言?...我不会打赌,尤其是在像中国这样的文化中,有多种方式和上下文敏感的用法。

于 2013-08-07T19:04:35.753 回答