Wie kann man einer bestimmten Zeit n Stunden hinzufügen?

15

Ich möchte eine Zeit haben, sagen wir 6:45 Uhr, und eine Anzahl von Stunden, sagen wir 1,45 Stunden, hinzufügen, um eine andere Zeit zu ergeben. Also möchte ich 1,45 Stunden auf 6:45 Uhr hinzufügen, um eine andere Zeit zu bekommen.

Gibt es dafür ein Kommandozeilen-Dienstprogramm? Ich habe ein bisschen gegoogelt und die Manpage dafür gelesen dateund so etwas nicht gefunden. wcalcscheint nicht mit Zeitberechnungen umzugehen.

EDIT: 6. März 2015. Dies ist das Skript, mit dem ich endete, um Dezimalstunden zu verwenden. Es könnte einige Fehlerprüfungen verwenden, um sicherzustellen, dass HH: MM 2 Ziffern für die Stunden verwendet.

#!/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"
Rohrkolben
quelle

Antworten:

26

Befehlszeile:

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

$now hält die von Ihnen angegebene Zeit.

Sie können eine Menge Dinge zwischen das "und" stellen; wie die aktuelle Zeit und fügen Sie 105 hinzu.


$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

Keine Nachkommastellen erlaubt ...


Von Kommentaren: So erhalten Sie die Antwort für 1,45 Dezimalstunden:

$ now=$(date -d "06:45 today + $((145 * 60 / 100)) minutes" +'%H:%M')
$ echo "$now:
8:12
Rinzwind
quelle
Squeee! Vielen Dank! Ich konnte den letzten Teil nicht lesen, aber der Teil um% H:% M besteht aus zwei einfachen Anführungszeichen. Gibt es eine Möglichkeit, dies in Dezimalstunden zu tun, anstatt es in Minuten umzuwandeln? Das würde einen Schritt eliminieren. Ich wäre sogar offen für die Installation eines speziellen Taschenrechners. Ich weiß deine Arbeit zu schätzen, bitte verstehe sie nicht falsch.
Bulrush
"+10 Tage" funktioniert auch. "+2 Stunde" auch. Natürlich können Sie hier auch eine Methode hinzufügen, um aus 2,5 Stunden Minuten zu machen;) Ich habe nie eine vollständige Liste von Wörtern gefunden, die Sie verwenden können ...
Rinzwind
@Bulrush hmm keine Nachkommastellen mit Stunde erlaubt: D
Rinzwind
@Rinzwind Ich bin mir nicht sicher, aber hast du es 2:30 hourstattdessen versucht 2.5 hour?
24.
1
@ Rinzwind So ist eine mögliche Verwendung 2 hour + 30 minutes;)
αғsнιη