Mise en forme pour différentes cultures

Pour la plupart des méthodes, les valeurs retournées à l'aide d'un des spécificateurs de format de chaîne peuvent apporter des modifications dynamiques en fonction de la culture actuelle ou d'une culture spécifiée. Par exemple, une surcharge de la méthode ToString accepte un fournisseur de format qui implémente l'interface IFormatProvider. Les classes qui implémentent cette interface peuvent spécifier les caractères à utiliser comme séparateurs décimaux et des milliers, ainsi que l'orthographe et l'emplacement des symboles monétaires. Si vous n'utilisez pas de substitution qui prend ce paramètre, la méthode ToString utilise les caractères spécifiés par la culture actuelle.

L'exemple suivant utilise la classe CultureInfo pour spécifier la culture employée par la méthode ToString et la chaîne de format. Ce code crée une nouvelle instance de la classe CultureInfo appelée MyCulture et l'initialise avec la culture française à l'aide de la chaîne fr-FR. Cet objet est passé à la méthode ToString avec le spécificateur de format de chaîne C afin de produire une valeur monétaire française.

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

Le code précédent affiche 100,00 dans un formulaire Windows Forms. Remarquez que l'environnement de la console ne prend pas en charge tous les caractères Unicode et affiche 100,00 ? à la place.

Consultez la classe CultureInfo pour obtenir la liste de toutes les cultures prises en charge.

L'exemple suivant montre comment modifier l'objet CultureInfo associé au thread actuel. Cet exemple suppose que la culture américaine (en-US) est la culture associée au thread actuel et montre comment modifier cette culture à l'aide de code. Cet exemple montre également comment spécifier une culture particulière en passant un CultureInfo modifié à une méthode ToString et comment passer un nouveau DateTimeFormatInfo à une méthode 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") )
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") );

Voir aussi

Référence

System.IFormatProvider Interface
System.Globalization.CultureInfo Class

Autres ressources

Mise en forme des types