Aplicar formato para diferentes referencias culturales

Actualización: noviembre 2007

Para la mayoría de los métodos, los valores devueltos mediante uno de los especificadores de formato de cadena tienen la capacidad de cambiar dinámicamente atendiendo a la referencia cultural actual o a la especificada. Por ejemplo, una sobrecarga del método ToString acepta un proveedor de formato que implemente la interfaz IFormatProvider. Las clases que implementan esta interfaz pueden especificar los caracteres que se van a usar como separadores de decimales y de millares, así como la escritura y ubicación de los símbolos monetarios. Si no se emplea un reemplazo que adopte ese parámetro, el método ToString usará los caracteres especificados en la referencia cultural actual.

En el siguiente ejemplo se utiliza la clase CultureInfo para especificar la referencia cultural que van a utilizar el método ToString y la cadena de formato. Este código crea una nueva instancia de la clase CultureInfo denominada MyCulture y la inicializa para adaptarla a la referencia cultural francesa mediante la cadena fr-FR. Este objeto se pasa al método ToString con el especificador de formato de cadena C con el fin de generar un valor monetario francés.

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

El código anterior muestra 100,00 cuando se muestra en un formulario Windows Forms. Hay que tener en cuenta que el entorno de la consola no admite todos los caracteres Unicode y muestra 100,00 ? en su lugar.

Vea la clase CultureInfo para obtener una lista de todas las referencias culturales compatibles.

En el siguiente ejemplo se muestra cómo se modifica el objeto CultureInfo asociado al subproceso actual. En este ejemplo se toma el inglés de Estados Unidos (en-US) como referencia cultural asociada al subproceso actual y se muestra cómo se modifica la referencia cultural a través del código. En este ejemplo se muestra también cómo se especifica una determinada referencia cultural pasando un objeto CultureInfo modificado a un método ToString y cómo se para un nuevo objeto DateTimeFormatInfo a un método 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

Vea también

Referencia

System.IFormatProvider

System.Globalization.CultureInfo

Otros recursos

Aplicar formato a tipos