Cálculo de fecha incorrecto por fecha en Ubuntu 16, 20

Cálculo de fecha incorrecto por fecha en Ubuntu 16, 20

Lo más extraño sucede con el cálculo de la fecha por lo que ves a continuación; ¡Observe que agregar un mes al 31 de octubre lo lleva a diciembre! ¿Esto no puede ser? Tengo el mismo problema en Ubuntu 16 y 20. Este problema también hace que mi script de shell proporcione una fecha incorrecta, por lo que no es solo el programador cron.

root@ubuntugc:/home/miuser# date -d "20210930+1 month" +%Y-%m-%d
2021-10-30
root@ubuntugc:/home/miuser# date -d "20211030+1 month" +%Y-%m-%d
2021-11-30
root@ubuntugc:/home/miuser# date -d "20211031+1 month" +%Y-%m-%d
2021-12-01

Respuesta1

Así datefunciona, al agregarlo 1 monthsolo aumenta el mes en uno, en tu caso a 2021-11-31la cual es una fecha que no existe por lo que luego adelanta el resultado un día a una fecha válida ( 2021-12-01). Dedocumentación de coreutils:

La confusión en las unidades puede causar problemas con elementos relativos. Por ejemplo, '2020-07-31 -1 mes' podría evaluarse como 2020-07-01, porque 2020-06-31 no es una fecha válida. Para determinar de forma más fiable el mes anterior, puedes preguntar por el mes anterior al día 15 del mes actual. Por ejemplo:

información relacionada