CultrueInfo保存区域特定的信息,如关联的语言、子语言、国家/地区、日历和区域性约定。该类还提供对DateTimeFormatInfo、NumberformatInfo、CompareInfo和TextInfo的区域性特定实例的访问。这些对象包含区域性特定操作(如大小写、格式化日期时间和数字以及比较字符串)所需的信息。
命名空间:System.Globalization
程序集:mscorlib(在 mscorlib.dll 中)
部分区域性名称和标识符:
区域性名称 | 区域性标识符 | 语言-国家/地区 |
ar | 0x0001 | 阿拉伯语 |
ar-EG | 0x0C01 | 阿拉伯语 – 埃及 |
zh-CN | 0x0804 | 中文 – 中国 |
zh-CHS | 0x0004 | 中文(简体) |
zh-TW | 0x0404 | 中文 – 台湾 |
zh-CHT | 0x7C04 | 中文(繁体) |
en | 0x0009 | 英语 |
en-GB | 0x0809 | 英语 – 英国 |
en-US | 0x0409 | 英语 – 美国 |
fr | 0x000C | 法语 |
fr-FR | 0x040C | 法语 – 法国 |
de | 0x0007 | 德语 |
de-DE | 0x0407 | 德语 – 德国 |
es | 0x000A | 西班牙语 |
es-BO | 0x400A | 西班牙语 – 玻利维亚 |
es-ES | 0x0C0A | 西班牙语 – 西班牙 |
可以通过名称和区域性标识符来创建CultureInfo:
名称 | 说明 |
---|---|
CultureInfo (Int32) | 根据区域性标识符指定的区域性初始化 CultureInfo 类的新实例。由 .NET Compact Framework 支持。 |
CultureInfo (String) | 根据由名称指定的区域性初始化 CultureInfo 类的新实例。由 .NET Compact Framework 支持。 |
CultureInfo (Int32, Boolean) | 基于区域性标识符指定的区域性并基于布尔值(指定是否使用系统中用户选定的区域性设置)来初始化 CultureInfo 类的新实例。由 .NET Compact Framework 支持。 |
CultureInfo (String, Boolean) | 基于名称指定的区域性并基于布尔值(指定是否使用系统中用户选定的区域性设置)来初始化 CultureInfo 类的新实例。由 .NET Compact Framework 支持。 |
CultureInfo类位于System.Globalization命名空间内,这个类和命名空间许多人都不是很熟悉,实际我们在写程序写都经常间接性的接触这个类,当进行数字,日期时间,字符串匹配时,都会进行CultureInfo的操作,也就是说,也就是不同的CultureInfo下,这些操作的结果可能会不一样,由于我们大部分开发部署都是在同一种语言环境中,平日里可能没有感觉到它的用处,如果你的开发的项目是给国外用户用的,有可能在你机器上运行输出是一种效果,在客户机器上是另一种输出效果,这句需要用到CultureInfo类了,对使用用户来说,这也是ms提供的人性化的一面(比方说,同样是日期,中文环境输出符合中国人的习惯,德语环境中的输出符合德国人的习惯,这是默认的输出方式),但对开发人员和服务数据中心来说,就要选择是保证统一的输出,还是用ms的默认方式了。
static readonly string[] CultureSources = { "en-us", "zh-cn", "ar-iq", "de-de" }; static readonly Random Ran = new Random(Environment.TickCount); static void Main() { for (int i = 0; i < CultureSources.Length; i++){ ThreadPool.QueueUserWorkItem(Client, i); } Console.ReadLine(); } static void Client(object obj) { int id = (int)obj; Thread.Sleep(Ran.Next(1000)); CultureInfo culture = CultureInfo.GetCultureInfo(CultureSources[id]); Thread.CurrentThread.CurrentCulture = culture; Console.WriteLine("操作系统语言设置成{0}\n数据输出是:{1}\n", culture.DisplayName, DateTime.Now.ToShortDateString()); }