不同区域性的格式设置

更新:2007 年 11 月

对于大多数方法,使用某个字符串格式说明符返回的值可以根据当前区域性或指定区域性而动态更改。例如,ToString 方法的重载接受实现 IFormatProvider 接口的格式提供程序。实现此接口的类可以指定用于货币符号的小数和千位分隔符的字符及其拼写和位置。如果不使用带此参数的重写,ToString 方法将使用当前区域性指定的字符。

下面的示例使用 CultureInfo 类指定 ToString 方法和格式字符串将使用的区域性。此代码创建一个名为 MyCulture 的 CultureInfo 类的新实例,并使用字符串 fr-FR 将该实例初始化为法语区域性。此对象被传递给具有 C 字符串格式说明符的 ToString 方法以产生法国货币值。

Dim MyInt As Integer = 100
Dim MyCulture As New CultureInfo("fr-FR")
Dim MyString As String = MyInt.ToString("C", MyCulture)
Console.WriteLine(MyString)
int MyInt = 100;
CultureInfo MyCulture = new CultureInfo("fr-FR");
String MyString = MyInt.ToString("C", MyCulture);
Console.WriteLine(MyString);

以 Windows 窗体形式显示时,上述代码会显示 100,00 。请注意,控制台环境不支持所有的 Unicode 字符,而是显示 100,00 ?。

有关所有受支持的区域性的列表,请参见 CultureInfo 类。

下面的示例演示如何修改与当前线程关联的 CultureInfo 对象。此示例假定美国英语 (en-US) 是与当前线程关联的区域性,并演示如何通过代码更改该区域性。此示例还演示了如何通过将修改后的 CultureInfo 传递给 ToString 方法来指定特定区域性,以及如何将新的 DateTimeFormatInfo 传递给 ToString 方法。

Dim dt As DateTime = DateTime.Now
Dim dfi As DateTimeFormatInfo = New DateTimeFormatInfo()
Dim ci As CultureInfo = New CultureInfo("de-DE")

' Create a new custom time pattern for demonstration.
dfi.MonthDayPattern = "MM-MMMM, ddd-dddd"

' Use the DateTimeFormat from the culture associated with 
' the current thread.

Console.WriteLine( dt.ToString("d") ) 
Console.WriteLine( dt.ToString("m") )

' Use the DateTimeFormat object from the specific culture passed.
Console.WriteLine( dt.ToString("d", ci ) )

' Use the settings from the DateTimeFormatInfo object passed.
Console.WriteLine( dt.ToString("m", dfi ) )

' Reset the current thread to a different culture.
Thread.CurrentThread.CurrentCulture = New CultureInfo("fr-BE")
Console.WriteLine( dt.ToString("d") )
' This example produces the following output:
'       3/27/2008
'       March 27
'       27.03.2008
'       03-March, Thu-Thursday
'       27/03/2008      
DateTime dt = DateTime.Now;
DateTimeFormatInfo dfi = new DateTimeFormatInfo();
CultureInfo ci = new CultureInfo("de-DE");

// Create a new custom time pattern for demonstration.
dfi.MonthDayPattern = "MM-MMMM, ddd-dddd";

// Use the DateTimeFormat from the culture associated with 
// the current thread.
Console.WriteLine( dt.ToString("d") ); 
Console.WriteLine( dt.ToString("m") );

// Use the DateTimeFormat object from the specific culture passed.
Console.WriteLine( dt.ToString("d", ci ) );

// Use the settings from the DateTimeFormatInfo object passed.
Console.WriteLine( dt.ToString("m", dfi ) );

// Reset the current thread to a different culture.
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-BE");
Console.WriteLine( dt.ToString("d") );
// This example produces the following output:
//       3/27/2008
//       March 27
//       27.03.2008
//       03-March, Thu-Thursday
//       27/03/2008

请参见

参考

System.IFormatProvider

System.Globalization.CultureInfo

其他资源

格式化类型