Comment ajouter n heures à une heure spécifiée?

15

J'aimerais avoir un temps, disons 6 h 45, et ajouter un nombre d'heures, disons 1,45 heure, pour obtenir un autre temps. J'aimerais donc ajouter 1,45 heures à 6h45 pour avoir une autre heure.

Existe-t-il une ligne de commande utile pour cela? J'ai fait quelques recherches sur Google et j'ai lu la page de manuel de dateet je n'ai rien trouvé de tel. wcalcne semble pas gérer les calculs de temps.

EDIT: 6 mars 2015. Voici le script avec lequel j'ai fini d'utiliser les heures décimales. Il pourrait utiliser une vérification d'erreur pour vous assurer que HH: MM utilise 2 chiffres pour les heures.

#!/bin/bash
# Mar 6, 2015
# Add decimal hours to given time. 
# Syntax: timeadd HH:MM HOURS
# There MUST be 2 digits for the hours in HH:MM.
# Times must be in military time. 
# Ex: timeadd 05:51 4.51
# Ex: timeadd 14:12 2.05
echo " "
# If we have less than 2 parameters, show instructions and exit.
if [ $# -lt 2 ]
then
    echo "Usage: timeadd HH:MM DECHOURS"
    exit 1
fi
intime=$1
inhours=$2
# Below is arithmetic expansion $(())
# The bc calculator is standard on Ubuntu. 
# Below rounds to the minute. 
inminutes=$(echo "scale=0; ((($inhours * 60)*10)+5)/10" | bc)
echo "inminutes=$inminutes"
now=$(date -d "$intime today + $inminutes minutes" +'%H:%M')
echo "New time is $now"
Jonc
la source

Réponses:

27

Ligne de commande:

$ now=$(date -d "06:45 today + 105 minutes" +'%H:%M')
$ echo "$now"
08:30

$now tiendra le temps que vous avez spécifié.

Vous pouvez mettre beaucoup de choses entre "et"; comme l'heure actuelle et ajoutez-y 105.


$now=$(date -d "06:45 today + 2.5 hour" +'%H:%M')
date: invalid date `06:45 today + 2.5 hour'
$now=$(date -d "06:45 today + 2:30 hour" +'%H:%M')
date: invalid date `06:45 today + 2:30 hour'
$ now=$(date -d "06:45 today + 2 hour" +'%H:%M')
$ echo "$now"
08:45

Pas de décimales autorisées ...


Des commentaires: Pour obtenir la réponse pour 1,45 heures décimales:

$ now=$(date -d "06:45 today + $((145 * 60 / 100)) minutes" +'%H:%M')
$ echo "$now:
8:12
Rinzwind
la source
Squeee! Je vous remercie! J'ai eu du mal à lire la dernière partie, mais la partie autour de% H:% M sont deux guillemets simples. Existe-t-il un moyen de le faire en heures décimales au lieu de le convertir en minutes? Cela éliminerait une étape. Je serais même prêt à installer une calculatrice spéciale. J'apprécie votre travail, ne vous méprenez pas.
Bulrush
"+10 jours" fonctionne aussi. "+2 heures" aussi. Bien sûr, vous pouvez également ajouter ici une méthode pour faire des minutes à partir de 2,5 heures;) Je n'ai jamais trouvé une liste complète de mots que vous pouvez utiliser ...
Rinzwind
@Bulrush hmm aucune décimale n'est autorisée avec l'heure: D
Rinzwind
@Rinzwind Je ne suis pas sûr mais avez-vous essayé à la 2:30 hourplace de 2.5 hour?
αғsнιη
1
@Rinzwind Il est donc possible d'utiliser 2 hour + 30 minutes;)
αғsнιη