He usado boost :: gregorian :: date un poco ahora.número de meses entre dos fechas - usando la fecha de impulso
Veo que están los meses relacionados & años & semanas tipos de duración. Veo cómo usar las duraciones conocidas para avanzar en una fecha determinada.
Qu: ¿Pero cómo puedo obtener la diferencia entre dos fechas en meses (o años o semanas)?
Tenía la esperanza de encontrar una función como:
template<typename DURATION>
DURATION date_diff<DURATION>(const date& d1,const date& d2);
No tendría que haber alguna manipulación de redondeo también.
Esta función devolvería el número de (digamos) meses enteros entre d1 y d2.
Sí, lo siento si eso no era clara. Me refiero a la cantidad de meses entre dos fechas. (O bien redondeado hacia arriba o hacia abajo, de alguna manera.) Aclararé la pregunta. BTW, la última línea de código da el número de días, no meses, ¿verdad? ¿Está escrito más claramente como num_days en lugar de meses? P. ej. : int num_days = (date2-date1) .days(); – MartinP
sí, ese fue mi error :) ahora se ha corregido un poco. En realidad, si desea el número correcto de meses para períodos largos, es mejor usar 365.25/12 en lugar de 30. –
Gracias por la información, pero lo siento, no estoy convencido por ese enfoque. Cualquier tratamiento basado en todos los meses tiene aproximadamente la misma duración y se obtendrá mal en algunos casos especiales. Como el caso patológico de febrero en un año bisiesto. Si di d1 para ser 30-Jan y d2 para 1-Mar, entonces la separación en días sería 28 (en un año bisiesto). Si solo observamos esa cifra de 28 días, no podemos saber si las dos fechas están en el mismo mes o posiblemente separadas por todos los de febrero. Es por eso que creo que necesitaríamos un calendario gregoriano para calcular cuántos meses del calendario completo hay entre dos fechas. – MartinP