Ayudanos a mejorar

Conversión de Datos en C# (II): ToString y Format Providers

DEV2

Si estás leyendo esta entrada desde una aplicación te recomendamos que hagas click aquí para ir a la web, ya que en la aplicación el código no sale formateado.

Seguimos con este segundo capítulo de conversión de datos, podéis consultar el primero aquí. En este capítulo vamos a jugar un poco con el método ToString y la interfaz IFormattable, que nos proporciona .NET para poder dar formato a nuestros datos con facilidad. Antes de nada, recordemos que tenemos que usar System.Globalization para poder trabajar con cualquier clase que implemente Iformattable. Veamos:

En este caso queremos imprimir un valor monetario en dólares por pantalla, y para ello hemos utilizado el método ToString al cual le entran dos argumentos. El primero de ellos, string format, en este caso es C, que significa que queremos que nos haga la conversión como si de una moneda se tratase. Podéis consultar los string format en este enlace. El segundo parámetro es un objeto heredado del tipo IFormatProvider, y este objeto establece que el CurrencySymbol es el símbolo del dólar. Así que por pantalla obtendremos:

Culturas y formato

Normalmente no necesitamos crear nosotros nuestro propio objeto ya que la clase CultureInfo suele ser suficiente para cualquier propósito general. En este caso, vamos a usar ToString y CultureInfo para formatear un número según las diferentes culturas que rondan por este nuestro mundo. Vamos allá:

Lo cual producirá la siguiente salida por consola:

En primer lugar, remarcar para los despistados, que no estamos haciendo conversión matemática de divisas, si no conversión de cadenas y formato a una salida determinada. Así vemos como cada país lleva su moneda actual, además de darnos cuenta de cómo en el caso de Venezuela y España usamos la coma para el decimal y los puntos para el separador de miles mientras que en estados unidos usan la coma para el separador de miles y el punto para el decimal.

Culturas en fechas

Podemos usar exactamente el mismo ejemplo anterior para mostrar una fecha según la cultura:

Con la salida por consola siguiente:

Pero lo mas normal si queremos desarrollar una aplicación es que se muestre en la cultura que tenga el usuario predefinida en el sistema, es decir, en la cultura configurada en el dispositivo. Para ello usaremos CultureInfo.CurrentCulture, que representará la cultura del usuario:

En mi caso, esto produce la salida siguiente:

En vuestro caso, si tenéis el sistema en otra región producirá la salida correspondiente a esa región.

Por último vamos a ver cono formatear fechas y horas usando ToString  para obtener solamente un dato determinado. Para ello usaremos culture.DateTimeFormat, que contiene strings con el formateo de fechas para la cultura del objeto. Mejor con un ejemplo:

Esto producirá la siguiente salida, que variará dependiendo de vuestra cultura:

¡Y aquí terminamos con la conversión de datos! Espero que os sirva.

Antonio de la Iglesia

Antonio de la Iglesia

Apasionado de la tecnología y administrador de Microsoft Insider. Me dedico a desarrollar software, y para ello utilizo en su mayoría tecnologías de Microsoft. Fundador de Microsoft Insider de rebote.

  • Rosalhes

    Me encantaría aprender a desarrollar… Pero por el momento no entiendo nada jejeje