C# Library – Iso8601Duration
Hace menos de un mes publiqué en mi blog una información relativa a la Norma ISO 8601 y la representación de fechas y horas con señaladores junto con .NET.
El único inconveniente que tenemos a la hora de trabajar con esto en .NET es que necesitamos utilizar el namespace System.Xml.
Otro inconveniente es que a través de este namespace, se nos limita un poco el uso de señaladores basados en el patrón PnnYnnMnnDTnnHnnMnnS.
Así que me he puesto manos a la obra y he programado una librería compatible con .NET Standard 2.0 para poder utilizarla tanto en .NET como en .NET Core, y que nos permita ampliar el paradigma de System.Xml y nos lo amplíe.
NormalizeDuration
He creado un método de nombre NormalizeDuration que lo que hace es normalizar un señalador a su señalador final.
Es decir, podemos pasarle el patrón «PT61S», y este método nos lo transformará normalizado a «PT1M1S».
DurationStruct
Por otro lado, he creado una estructura (DurationStruct) que amplía la posibilidad de trabajar con años, meses, días, minutos, horas y segundos (TimeSpan tiene el límite puesto en días, no pudiéndose seleccionar años y meses).
De esta forma, con DurationStruct, podemos incluso pasarla como parámetros dentro de nuestra aplicación para posteriormente convertirla al señalador correspondiente de forma automática.
ToDurationStruct
Con este método, podemos convertir a DurationStruct un patrón dado, o bien, a partir de un TimeSpan determinado, podemos convertirlo a DurationStruct.
DurationStruct nos permitirá trabajar con ella más cómodamente a como lo haríamos con TimeSpan además de suprimir las limitaciones que TimeSpan nos impone.
ToString
Con este método, podemos convertir a un patrón dado, un TimeSpan o un DurationStruct.
ToTimeSpan
Con este método, podemos convertir a TimeSpan un patrón dado o un DurationStruct.
Encontrarás más información y el código fuente completo en este enlace.
Encontrarás este paquete en NuGet en este enlace.
¡Happy Coding!