Si vous avez besoin de trouver la différence entre deux heures , si elles diffèrent que par quelques secondes ou en années, vous pouvez le faire dans la version GNU de Unix avec la commande "date" . Toutefois, la procédure n'est pas intuitive , que la commande date ne fournit pas directement d'un drapeau ou un argument pour cette procédure. En outre, plusieurs versions de la commande date existent dans Unix. Notez que ce qui fonctionne dans la version GNU de la commande date ne fonctionnera pas avec la version BSD . Unix Epoch
La clé pour résoudre ce problème est de comprendre comment l'ordinateur conserve en fait la notion du temps . Un ordinateur Unix stocke toutes les fois que le nombre de secondes qui se sont écoulées depuis l' époque Unix. L'époque Unix est minuit du 1er Janvier , 1970.
Obtenir les secondes depuis l'époque Unix
Vous pouvez obtenir le nombre de secondes depuis l'époque Unix à une donnée date en utilisant une combinaison du drapeau "+ de % s" et la commande - "date" . Tapez la commande suivante dans un shell pour obtenir le nombre de secondes de l'époque Unix au 11 Mars 2011: Date de fermeture de
- Date 2011-03-11 + % de
la
Le résultat sera : 1299823200 . Vous pouvez utiliser n'importe quel format de date et heure que vous pouvez analyser par la commande "date" dans ce script . Vous pouvez taper " man date " dans votre coquille à lire tous les formats de date valides .
La solution
Comme vous pouvez prendre n'importe quelle date donnée ou heure dans un format compatible Unix et convertir les secondes avant ou depuis l' époque Unix, vous pouvez trouver la différence entre deux fois en soustrayant les résultats de deux de ces commandes.
Tapez les commandes suivantes dans votre shell: Photos
d1 = `date - la date `
d2 2011-03-11 + % = `date - Date 2010-05-12 + % s `
< p> echo "$ ((( d1 -d2 ))) secondes différence "
Dans les deux premières lignes , le caractère ` est pas un guillemet . Il s'agit d'un back- tique. Vous pouvez retrouver ce personnage à la gauche de la touche "1" sur un clavier standard US .
La sortie devrait être la différence entre les deux fois en quelques secondes . Si vous avez besoin , vous pouvez convertir en minutes , heures, jours , et ainsi de suite en divisant par le nombre de secondes dans une minute, minutes dans une heure ou deux heures dans une journée .
Un Script
ce serait une nuisance pour taper ces trois longues commandes à chaque fois, vous devriez encapsuler dans un script. ! Ouvrez votre éditeur de texte favori et collez le code suivant :
# /usr /bin /env bash
d1 = `date - date 1 $`
d2 + % = `date - date de 2 $`
écho s + % "$ ( ( (d1 -d2 ))) secondes différence "
change un peu les choses . La première ligne permet à l' enveloppe actuelle sachez que vous écrivez ce script pour utiliser le langage de la coquille " bash " . Comme vous remplacez les dates des deux commandes de date avec "$ 1 " et "2 $ ", vous pouvez passer de nouvelles dates pour le script chaque fois que vous exécutez. Une fois de plus , dans les deux premières lignes , vous utilisez le , une apostrophe arrière - tique ` pas .
Enregistrez votre script avec le nom " timediff.sh " et exécutez la commande « chmod + x timediff.sh . " dans votre shell Unix pour laisser savoir qu'il a l'autorisation d'exécuter ce qu'un script
fois que vous faites cela, vous pouvez trouver la différence entre deux dates et heures en tapant:
. /timediff.sh 13/09/2010 14/01/1981