as400Esto es bastante básico, pero a los usuarios más noveles puede que le resulte complicado y precisamente llegué a ello a raíz de la pregunta de un alumno hace poco…

El caso es que los sistemas AS/400 suelen devolver los campos de fecha en un formato similar a este: 20110422, que es tal y como esta almacenado en la base de datos tipo texto. Es decir, el formato es YYYMMDD.

¿Cómo las conviertes en fechas de pleno derecho en .NET?

Si es un campo de texto y siempre tiene este mismo formato exactamente (es decir, cuatro cifras para el año, 2 para el mes y 2 para el día) es muy fácil convertirlo en una fecha usando el método ParseExact de la clase DateTime:

DateTime.ParseExact("20110422", "yyyyMMdd", CultureInfo.InvariantCulture)

Simplemente le indicas la fecha, el formato como segundo parámetro (en este caso cuatro cifras para el año, dos para el mes (ojo, el mes es una M mayúscula, la minúscula son minutos) y dos para el día del mes) y listo.

También podrías hacerlo analizando la cadena separándola en grupos de dígitos, pero no merece la pena complicarse la vida existiendo ParseExact en el propio framework.

Lo dicho: truco rápido y sencillo que seguro que a más de uno le resulta útil :-)

💪🏻 ¿Este post te ha ayudado?, ¿has aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor

Escrito por un humano, no por una IA