Formatieren für unterschiedliche Kulturen

Bei den meisten Methoden können die mit einem der Formatbezeichner für Zeichenfolgen zurückgegebenen Werte dynamisch entsprechend der aktuellen Kultur oder einer angegebenen Kultur geändert werden. Eine Überladung der ToString-Methode akzeptiert z. B. einen Formatanbieter, der die IFormatProvider-Schnittstelle implementiert. Klassen, die diese Schnittstelle implementieren, können Zeichen für Dezimal- und Tausendertrennzeichen sowie die Schreibweise und Positionierung von Währungssymbolen angeben. Wenn Sie keine Überschreibung verwenden, die diese Parameter übernimmt, verwendet die ToString-Methode die durch die aktuelle Kultur angegebenen Zeichen.

Im folgenden Beispiel wird mit der CultureInfo-Klasse die Kultur angegeben, die von der ToString-Methode und der Formatzeichenfolge verwendet wird. Dieser Code erstellt eine neue Instanz der CultureInfo-Klasse mit der Bezeichnung MyCulture und initialisiert sie unter Verwendung der Zeichenfolge fr-FR für die Kultur Französisch. Dieses Objekt wird mit dem Formatbezeichner für Zeichenfolgen C an die ToString-Methode übergeben, um einen französischen Währungswert zu erstellen.

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

Der oben stehende Code zeigt 100,00 an, wenn er in einem Windows Forms-Formular angezeigt wird. Beachten Sie, dass die Konsolenumgebung nicht alle Unicode-Zeichen unterstützt und stattdessen 100,00 ? anzeigt.

In der CultureInfo-Klasse finden Sie eine Liste aller unterstützten Kulturen.

Das folgende Beispiel veranschaulicht, wie das dem aktuellen Thread zugeordnete CultureInfo-Objekt geändert wird. In diesem Beispiel wird davon ausgegangen, dass dem aktuellen Thread die Kultur Englisch (USA) (en-US) zugeordnet ist, und es wird veranschaulicht, wie diese Kultur durch Code geändert wird. Das Beispiel veranschaulicht außerdem, wie eine bestimmte Kultur angegeben wird, indem eine geänderte CultureInfo an eine ToString-Methode übergeben wird, und wie eine neue DateTimeFormatInfo an eine ToString-Methode übergeben wird.

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

Siehe auch

Referenz

System.IFormatProvider Interface
System.Globalization.CultureInfo Class

Weitere Ressourcen

Formatierung von Typen