Script Bash/commande à imprimer date 5 min avant/après
J'ai besoin de quelque sorte l'utilisation de la date de commande de bash ou un autre utilitaire pour imprimer la date et l'heure, 5 minutes avant et après 5 minutes d'une valeur donnée.
Par exemple:
d'entrée:
Thu Dec 19 14:10
de sortie:
Thu Dec 19 14:05 Thu Dec 19 14:10 Thu Dec 19 14:15
Je vois que le date
de commande peut être utilisé pour ce faire sur la date/heure actuelle, peut-il être utilisé avec une valeur passée, c'est à dire pas la date/heure actuelle?
OriginalL'auteur user117974 | 2013-12-19
Vous devez vous connecter pour publier un commentaire.
Vous pouvez atteindre cet objectif, à l'heure actuelle, en tapant.
D'utiliser une date spécifique (ex 1978/01/10).
isodate=$(date --rfc-3339=seconds -d "Thu Dec 19 14:10"); date -d "$isodate + 5 minutes"
OriginalL'auteur Rafa
Avec GNU
date
, vous pouvez faire un simple formulaire de la date/heure de l'arithmétique avec l'argument de la--date
option:Avec BSD
date
(au moins, la version fournie avec Mac OS X), le-v
option vous permet de faire quelque chose de similaire, mais seulement à l'heure actuelle:Sinon, vous devez effectuer les calculs explicitement après la conversion du temps d'un timestamp UNIX (nombre de secondes depuis le 1er janvier 1970):
OriginalL'auteur chepner
Si vous utilisez bash sous linux, vous pouvez utiliser le
-d
paramètre pour effectuer la date de manipulation sur un existant date:Obtenir l'ÉPOQUE pour la date en question:
Cela vous donne le temps, en quelques secondes, depuis l'ÉPOQUE (généralement 01/01/1970)
Maintenant, vous pouvez utiliser un simple calcul de soustraire ou d'ajouter 5 minutes (en secondes) à l'ÉPOQUE
évidemment, il y a 300 secondes à 5 minutes
Maintenant convertir ce NEW_EPOCH de retour dans une lisible par l'homme date
NOTEZ que cela ne fonctionne que sur les systèmes unix à l'appui de la date de l'option-d (c'est à dire Linux)
OriginalL'auteur Donovan
Si vous voulez faire cela pour que l'heure actuelle +/-5 minutes et que vous utilisez Bash 4.2 ou plus récent, vous pouvez le faire sans outils externes:
La
%(datefmt)T
chaîne de mise en forme deprintf
permet d'imprimer la date et l'heure des chaînes de caractères. Si l'argument est ignoré (comme ici) ou est-1
, l'heure actuelle est utilisée.%s
formats le temps en secondes depuis l'epoch, et-v now
stocke le résultat dansnow
au lieu de l'imprimer.f
est juste une commodité variable donc je n'ai pas à répéter la chaîne de mise en forme pour la sortie de trois fois.Depuis l'argument en faveur de cette utilisation de
printf
a en secondes depuis l'epoch, vous êtes coincé avec des outils externes pour convertir une chaîne d'entrée commeThu Dec 19 14:10
dans ce format et que vous souhaitez remplaceravec, par exemple, l'un de
OriginalL'auteur Benjamin W.