Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#/.NET中格式化其他语言环境中的数字和日期_C#_.net_Localization_Digit - Fatal编程技术网

在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:

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

玩ToLongDateString()


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();