¿Cuál es el equivalente BSD del comando de la fecha de Linux para sumar días / semanas / meses de resta de una fecha determinada?

4

Tengo una fecha determinada, como 2013-10-31 y debo determinar con precisión el día siguiente (teniendo en cuenta el horario de verano, años bisiestos, minutos de salto, zonas horarias, etc.) No tengo forma de saber si la fecha es al final de un mes / año / etc, y sinceramente espero no tener que preocuparme por eso.

En Linux, simplemente escribo:

date1="2013-10-31"
day_after='date -ud"$date1 1 days" +%Y-%m-%d'

echo "$day_after" => 2013-11-01

Sin embargo, cuando intento lo mismo en Darwin / BSD:

date1="2013-10-31"
day_after='date -v1d -ujf"%Y-%m-%d" $date1 +%Y-%m-%d'

echo "$day_after" => 2013-10-01

¿Cómo puedo hacer que BSD realice los cálculos de fecha adecuados?

    
pregunta Joshua Olson 05.11.2013 - 19:22

1 respuesta

4

Debe especificar + en su ajuste de fecha o BSD asume que le está dando un día real del mes a usar.

date1="2013-10-31"
day_after='date -v+1d -ujf"%Y-%m-%d" $date1 +%Y-%m-%d'

echo "$day_after" => 2013-11-01
    
respondido por el Joshua Olson 05.11.2013 - 19:38

Lea otras preguntas en las etiquetas