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

标签 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',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# 在中国(可能还有日本和其他)日历中显示日期,就像阿拉伯日历一样吗?

最佳答案

使用 ToLongDateString()

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

myDate 的值:2013 年 8 月 7 日

关于c# - 在 C#/.NET 的其他语言环境中格式化数字和日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18111424/

相关文章:

c# - 使用 yield 的方法不允许调用自己

c# - 对自定义对象列表进行排序

javascript - 脚本在 Web 浏览器控件中不起作用

c# 模拟接口(interface) vs 模拟类

php - 用于验证 linux 文件名的正则表达式(多编码)

ios - Xcode 删除特定于语言的 Storyboard iOS

c# -  以 ANSI 格式查看时出现在我的 utf-8 文本文件的开头

c# - x64 上的 TypeLoadException 但在具有 structlayouts 的 x86 上没问题

c# - 如何制作通用类型转换函数

wpf - 在没有 LocBAML 的情况下本地化 WPF 应用程序的最佳方法是什么?