Поделиться через


Форматирование для различных языков и региональных параметров

Обновлен: Ноябрь 2007

В большинстве методов значения, возвращаемые с помощью одного из спецификаторов формата, могут динамически изменяться в зависимости от текущих и заданных региональных параметров. Например, перегруженный метод ToString принимает поставщика формата, реализующего интерфейс IFormatProvider. С помощью классов, реализующих этот интерфейс, можно задавать знак-разделитель целой и дробной частей числа, знак-разделитель тысяч, знак валюты и его расположение. Если переопределенный метод не получает этих параметров, при вызове метода ToString будут использованы знаки, определенные в текущих региональных параметрах.

В следующем примере используется класс CultureInfo для указания региональных параметров, которые будут использоваться методом ToString и строками форматирования. Этот код создает новый экземпляр класса CultureInfo с именем MyCulture и инициализирует его с использованием региональных параметров для Франции и строки fr-FR. Чтобы получить строку в денежном формате Франции, объект передается методу ToString со спецификатором формата строки C.

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);

Предыдущий код выводит строку 100,00 на форму Windows Forms. Обратите внимание, что среда консоли не поддерживает все символы Юникод. В консоли будет отображена строка 100,00 ?.

См. класс CultureInfo, чтобы получить список всех поддерживаемых региональных параметров.

В следующем примере показано изменение объекта CultureInfo, связанного с текущим потоком. Демонстрируется программное изменение региональных параметров. Предполагается, что по умолчанию с текущим потоком связаны региональные параметры "Английский (США)". В этом примере также демонстрируется задание конкретных языка и региональных параметров путем передачи измененного значения 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

Другие ресурсы

Типы форматирования