Trouver la différence entre deux dates en bash
Je tente de faire la différence entre deux dates avec:
date -d $(echo $(date -d "Sun Dec 29 02:22:19 2013" +%s) - $(date -d "Sun Dec 28 03:22:19 2013" +%s) | bc)
Toutefois, cela renvoie
date: invalid date ‘82800’
Pourquoi est-ce, et comment puis-je obtenir le résultat souhaité?
Dans quel format voulez-vous la différence à apparaître comme? 82800 est le nombre de secondes à 23 heures, ce qui est la différence dans le temps. Mais l'extérieur
Vous pouvez trouver unix.com/tips-tutorials/... utile
Le même format que les deux dates
C'est absurde - un intervalle de temps ne peut pas être représenté comme une date. Ou, plutôt, il peut, mais la réponse (a) consiste à fausser les unités et (b) se termine comme une fois sur 1970-01-01.
Bon point. Est-il une manière que je peux spécifier le format de la date avec l'habitude
date -d
veut quelque chose de reconnaissable comme une date.Vous pouvez trouver unix.com/tips-tutorials/... utile
Le même format que les deux dates
C'est absurde - un intervalle de temps ne peut pas être représenté comme une date. Ou, plutôt, il peut, mais la réponse (a) consiste à fausser les unités et (b) se termine comme une fois sur 1970-01-01.
Bon point. Est-il une manière que je peux spécifier le format de la date avec l'habitude
+%
séquences?OriginalL'auteur gandalf3 | 2013-12-30
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser:
Et la sortie est:
Toutefois, pour les différences arbitraires de plus de 24 heures, vous devez commencer à me soucier de la valeur pour les jours seront représentés. Les valeurs négatives seront également présenter des problèmes.
Le problème avec cela est que si vous déposez la chaîne de format, la date est présenté:
Ainsi, alors que cela fonctionne pour les deux valeurs de date/heure, il n'est pas vraiment une solution générale.
Envisager d'ajouter
%j
pour le jour de l'année; elle fonctionnera semi-sainement jusqu'à 1 an de différence.Sinon, la capture de la différence dans une variable et de présenter les résultats avec un calcul séparé.
De sortie:
(Ce qui signifie: un écart positif de 0 jours, 23 heures, 0 minutes, 0 secondes.) La division d'un nombre de jours tels que 1000 en années, en mois et en jours, est lourde, sans dates de référence. Ici, il y a des dates de référence pour l'aider, mais il serait encore ... plaisir.
if (( delta < 0 ))
et((ss=delta % 60))
et ainsi de suitePourquoi tant Dec 28 et 29 du dimanche?
Je pensais aller pour une inhabituelle système de calendrier! Merci; fixe. Il va montrer que la date de processus de conversion ne fait pas attention à les jours de la semaine lors de l'analyse de la chaîne de date.
OriginalL'auteur Jonathan Leffler