在C#开发中,CultureInfo类位于System.Globalization命名空间,用来表示某种语言和文化相关的信息,比如日期格式、数字分隔符、货币符号等。通过它我们可以让程序根据不同地区展示合适的内容。
什么是CultureInfo
CultureInfo是一个描述用户语言与地区习惯的对象。每一种文化用一个名称标识,例如zh-CN表示简体中文(中国),en-US表示英语(美国)。它主要影响字符串格式化、日期时间显示、货币显示等方面。
如何创建CultureInfo
可以通过文化名称直接创建,也可以使用系统当前文化。下面给出基础示例:
using System;
using System.Globalization;
class Program
{
static void Main()
{
// 获取当前线程的文化
CultureInfo current = CultureInfo.CurrentCulture;
Console.WriteLine(current.Name);
// 创建简体中文文化
CultureInfo zh = new CultureInfo("zh-CN");
// 创建美国英语文化
CultureInfo en = new CultureInfo("en-US");
Console.WriteLine(zh.DisplayName);
Console.WriteLine(en.DisplayName);
}
}
用CultureInfo格式化日期和货币
同一个日期在不同文化下显示方式不同。我们可以把CultureInfo传给ToString方法控制输出:
using System;
using System.Globalization;
class Program
{
static void Main()
{
DateTime now = DateTime.Now;
CultureInfo zh = new CultureInfo("zh-CN");
CultureInfo en = new CultureInfo("en-US");
// 日期格式化
Console.WriteLine(now.ToString("D", zh)); // 中文长日期
Console.WriteLine(now.ToString("D", en)); // 英文长日期
// 货币格式化
decimal money = 1234.5m;
Console.WriteLine(money.ToString("C", zh)); // ¥1,234.50
Console.WriteLine(money.ToString("C", en)); // $1,234.50
}
}
切换线程文化实现整体本地化
如果希望整个程序按某种文化运行,可以设置当前线程的Culture和UICulture:
using System;
using System.Globalization;
using System.Threading;
class Program
{
static void Main()
{
// 设置线程文化为日本
CultureInfo ja = new CultureInfo("ja-JP");
Thread.CurrentThread.CurrentCulture = ja;
Thread.CurrentThread.CurrentUICulture = ja;
DateTime now = DateTime.Now;
Console.WriteLine(now.ToString("D")); // 按日本格式显示
}
}
常见文化名称对照
| 文化名称 | 说明 |
|---|---|
| zh-CN | 简体中文(中国) |
| zh-TW | 繁体中文(台湾) |
| en-US | 英语(美国) |
| ja-JP | 日语(日本) |
| ko-KR | 韩语(韩国) |
注意事项
- 文化名称写错会抛出ArgumentException,使用前要确认系统支持。
- InvariantCulture用于与语言无关的数据存储,不适合展示给用户。
- 在ASP.NET中常用Request.UserLanguages获取浏览器偏好文化。
通过上述用法,你可以在C#中轻松完成多语言文化设置,让软件更符合不同地区用户的使用习惯。
C#CultureInfo多语言本地化区域设置修改时间:2026-07-24 22:39:39