¿Hay alguna manera de almacenar y manipular un lapso de tiempo que tenga en cuenta la duración de los meses, los años bisiestos, etc.?

StackOverflow https://stackoverflow.com/questions/1608175

Pregunta

Estaba a punto de escribir esto por mí mismo, pero sé que tiene que existir y solo estoy logrando evitar todas las palabras clave de Google que me conducirían a ello.

Buscaría algo como DDDMMMYYY donde D, M, Y son el número de días, meses y años. Entonces 00103000 indicaría un lapso de tres meses y un día, o 000000001 indicaría un lapso de un año. Idealmente, este formato también tendría una forma estándar de aplicarlo que podría tener en cuenta todos los inconvenientes del cálculo del intervalo de tiempo, como la cantidad variable de días en un mes, los años bisiestos, etc.

No estoy buscando una manera de calcular un intervalo de tiempo entre dos marcas de tiempo conocidas, como se solicitó aquí ( Calcular el tiempo relativo en C # ), estoy buscando algo como un formato de cadena específico que puedo almacenar que indicaría un lapso de tiempo que se usará para determinar una segunda fecha desconocida de una conocida.

Por ejemplo, usando mi formato ficticio anterior: si dijera "calcular qué fecha sería 00103000 a partir del 15 de septiembre de 2009" regresaría " 16 de diciembre de 2009 " ;, que es tres meses y un día después del 15 de septiembre.

¿Fue útil?

Solución

Recomendaría consultar el formato ISO 8061 para las duraciones. No solo es fácil de analizar y aplicar a una fecha determinada, es un estándar bien conocido con muchos recursos disponibles.

Determinar la duración a partir de dos puntos en el tiempo es un poco más complicado, pero solo porque sin la participación de la aplicación, no está claro si del 1 de marzo al 1 de junio es de 3 meses o 92 días. No obstante, el formato puede expresarse tanto bien como, por ejemplo, 0,25 años.

Otros consejos

La representación más simple y común de esto es un número: el número de segundos en el intervalo de tiempo (que puede ser o no fraccional, según sus necesidades). Muchas bibliotecas de tiempo ya representan el tiempo como segundos desde la época , por lo que esto hace que la suma y la resta de tiempos triviales. El único problema importante que preocupa es el desbordamiento (por ejemplo, error del año 2038 ).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top