6 votes

Quel est l'équivalent BSD de la commande date de Linux pour ajouter ou soustraire des jours/semaines/mois d'une date donnée ?

J'ai une date donnée, par exemple 2013-10-31, et je dois déterminer avec précision le jour suivant (en tenant compte de l'heure d'été, des années bissextiles, des minutes bissextiles, des fuseaux horaires, etc.) Je n'ai aucun moyen de savoir si la date se trouve à la fin d'un mois/année/etc, et j'espère sincèrement ne pas avoir à m'en soucier.

Sous Linux, je tape simplement :

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

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

Cependant, lorsque j'essaie la même chose dans Darwin/BSD :

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

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

Comment puis-je faire en sorte que BSD calcule correctement les dates ?

5voto

Anatidaus Points 2549

Vous devez spécifier + dans votre ajustement de date ou BSD suppose que vous lui donnez un jour réel du mois à utiliser.

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

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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X