6 votos

¿Cuál es el equivalente en BSD del comando date de linux para sumar y restar días/semanas/meses a una fecha dada?

Tengo una fecha dada, como 2013-10-31 y necesito determinar con precisión el día siguiente (teniendo en cuenta el DST, los años bisiestos, los minutos bisiestos, las zonas horarias, etc). No tengo forma de saber si la fecha está 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 conseguir que BSD haga los cálculos de fecha adecuados?

5voto

TomOnTime Puntos 2847

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

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

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X