CLR 全面透彻解析:国际应用程序
2008-12-01 11:52:36 来源:WEB开发网CultureInfo 对象是使用某种特定文化标识符创建的。例如,为了创建一个在芬兰区域设置中使用时包含有关瑞典区域设置信息的对象,您会在构造函数中指定名称 "sv-FI"。Framework 包括许多有关文化的信息,Windows 还包含用于各种区域设置的数据。除此之外,用户还可以创建他们自己的自定义文化。
CultureInfo 可实现 IformatProvider,这是一种 ToString 可以视为日期和数字参数的类型。让我们回溯到原来的 DateTime.Now.ToString 示例上,如果希望使用与 sv-FI 文化相关联的默认格式来格式化日期,您可以编写下列代码:
DateTime.Now.ToString(new CultureInfo("sv-FI"));
如果没有用户改写 sv-FI 且讨论的日期恰好仍为 "6/26/1980",则日期将输出为 "26.6.1980",后跟时间字符串。如果想得到与 sv-FI 相关联的长日期格式,可编写如下代码:
CultureInfo ci = new CultureInfo("sv-FI");
Console.WriteLine(DateTime.Now.ToString(ci.DateTimeFormat.LongDatePattern, ci));
这将得到字符串 "den 26 juni 1980"。请注意,只包括 DateTimeand 日期部分的 LongDatePattern 将忽略时间。这些示例之所以正常执行是因为使用了存储在 CultureInfo 对象中的格式化信息。
这阐明了传入特定格式化信息时 ToString 的工作方式。但正如您在文章最开头所看到的,有许多 ToString 重载方法,它们根本未收到任何格式化信息。但数据却仍被格式化了。那么这些信息是从哪里来的呢?
CultureInfo 类的一个静态属性是 CurrentCulture。这将返回与当前线程相关联的文化。此属性可通过 Thread.CurrentThread.CurrentCulture 加以设置。线程创建完毕后,它们会默认使用操作系统的当前文化。如果没有为 ToString 或 Parsing 操作指定格式化信息,则使用 CultureInfo.CurrentCulture 中的信息。
更多精彩
赞助商链接