Sous Linux
Utilisez simplement -d
(ou --date
) pour faire des calculs avec les dates :
date -d '+1 hour' '+%F %T'
# ^^^^^^^^^^^^
Par exemple :
$ date '+%F %T'
2013-04-22 10:57:24
$ date -d '+1 hour' '+%F %T'
2013-04-22 11:57:24
# ^
Sur Mac OS
Attention, ce qui précède ne fonctionne que sur Linux, pas sur Mac OS.
Sous Mac OS, la commande équivalente est
date -v+1H
Linux et macOS en une seule commande
Si vous devez écrire des scripts qui fonctionnent à la fois sur les serveurs Linux et les postes de travail macOS, vous pouvez désactiver l'erreur du premier date
appeler et 'OU' (||
) avec l'autre. Peu importe ce qui vient en premier.
date -u -d "+${max_age}Seconds" +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || \
date -u -v "+${max_age}S" +"%Y-%m-%dT%H:%M:%SZ"
Par exemple, cette fonction bash charge un fichier sur AWS S3 et définit un Expires:
et Cache-Control:
en-têtes.
s3_upload_cache_control(){
local max_age_seconds="${1}" ;shift # required
local bucket_path="${1}" ;shift # required
local filename="${1}" ;shift # required
local remote_filename="/${1:-${filename}}" # optional
local fmt="+%Y-%m-%dT%H:%M:%SZ"
aws s3 cp \
"${filename}" \
"s3://${bucket_path}${remote_filename}" \
--expires "$( \
date -u -d "+${max_age_seconds}Seconds" $fmt 2>/dev/null || \
date -u -v "+${max_age_seconds}S" $fmt )" \
--cache-control max-age=$max_age,public \
--acl public-read
}
Dans le script shell, si nous devons ajouter de l'heure, utilisez le format de commande et de date ci-dessous (PUT TIME avant la chaîne DATE)
date -d"11:15:10 2017-02-05 +2 hours" +"%Y-%m-%d %H:%M:%S"
cela affichera 2017-02-05 13:15:10
Cela ne donne pas une date correcte sans UTC cela ne fonctionne pas