Formattazione per impostazioni cultura differenti
Aggiornamento: novembre 2007
Per la maggior parte dei metodi i valori restituiti con l'utilizzo di un identificatore di formato stringa vengono modificati dinamicamente in base alle impostazioni cultura correnti o a impostazioni cultura specificate. Un overload del metodo ToString, ad esempio, accetta un provider di formato che implementa l'interfaccia IFormatProvider. Tramite le classi che implementano questa interfaccia vengono specificati i caratteri da utilizzare per i separatori decimali e delle migliaia nonché il tipo e la posizione dei simboli di valuta. Se non si utilizza un override che accetta questo parametro, il metodo ToString utilizzerà i caratteri specificati dalle impostazioni cultura correnti.
Nell'esempio riportato di seguito viene utilizzata la classe CultureInfo per specificare le impostazioni cultura che verranno utilizzate dalla stringa di formato e dal metodo ToString. Con questo codice viene creata una nuova istanza della classe CultureInfo denominata MyCulture che viene inizializzata per le impostazioni cultura francesi mediante la stringa fr-FR. L'oggetto viene passato al metodo ToString con la stringa C dell'identificatore di formato per produrre un valore monetario francese.
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);
Mediante il codice precedente, in un form di Windows Form verrà visualizzato il valore 100,00 . Si noti che l'ambiente della console non supporta tutti i caratteri Unicode e visualizza invece 100,00 ?.
Per l'elenco di tutte le impostazioni cultura supportate, vedere la classe CultureInfo.
Nell'esempio seguente viene illustrato come modificare l'oggetto CultureInfo associato al thread corrente. L'esempio si basa sul presupposto che le impostazioni cultura associate al thread corrente siano rappresentate dall'inglese (en-US) e viene illustrato come modificare tali impostazioni cultura a livello di codice. Viene inoltre dimostrato come specificare determinate impostazioni cultura passando un oggetto CultureInfo modificato a un metodo ToStringe come passare un nuovo oggetto DateTimeFormatInfo a un metodo 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
Vedere anche
Riferimenti
System.Globalization.CultureInfo