Compartir a través de


Aplicar formato para diferentes referencias culturales

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 de se emplea 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 las referencias culturales compatibles.

En el siguiente ejemplo se muestra cómo modificar 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 muestra cómo modificar la referencia cultural a través del código. Este ejemplo muestra también cómo especificar una referencia cultural concreta pasando un objeto CultureInfo modificado a un método ToString y cómo pasar un nuevo 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") )
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") );

Vea también

Referencia

System.IFormatProvider Interface
System.Globalization.CultureInfo Class

Otros recursos

Aplicar formato a tipos