在C#/.NET中格式化其他语言环境中的数字和日期
在我正在编写的应用程序中,我希望用英语显示当前日期和时间,但也要用其他语言环境显示 例如俄语、阿拉伯语和汉语在C#/.NET中格式化其他语言环境中的数字和日期,c#,.net,localization,digit,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.ToStri
// 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日星期三"
看起来比简单的替换要复杂得多;有时一个字符变为两个字符。
接下来,格式化的日期似乎显示当前的公历日期,而不是日期
所以我的问题是:
A) .NET/C中是否有本地化功能,可以在其他数字系统中显示数字(具体是日期)
B) 我是否可以强制.NET/C以中文(可能还有日文和其他)日历显示日期,就像阿拉伯语日历一样?查看以下问题(和答案):
- MSDN:
myDate的价值:2013年年8.月7.日
(new CultureInfo(“zh CN”)。日历为公历,您可能需要自定义CultureInfo。数字替换的工作原理如下:(1)各种ToString
函数返回标准(0-9)数字;(2) 在启用数字替换的主机中显示字符串时(例如,在WPF窗口中),数字将以透明的方式显示在国家脚本中(但线程的区域性必须设置为国家),请参阅;(3) 这项功能目前仅适用于阿拉伯语、印地语和泰语,因此没有自动处理中文经典数字的方法。我似乎无法做到这一点:(CultureInfo Arabic=new CultureInfo(“ar”);
Arabic.NumberFormat.DigitSubstitution=DigitShapes.NativeNational;
DateTime.Now.ToString(“ddddd٬d MMM٬yyyyy”(阿拉伯语);
/“string.Format(阿拉伯语,{0}”,1);
“1”
不要忘记保存以前的文化并在以后放回去,否则可能会发生奇怪的事情……)
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("zh-CN");
var myDate = DateTime.Now.ToLongDateString();