Come aggiungere n ore a un'ora specificata?


15

Mi piacerebbe avere un po 'di tempo, diciamo 6:45, e aggiungere un numero di ore, diciamo 1,45 ore, per portare a un'altra volta. Quindi vorrei aggiungere 1,45 ore alle 6:45 per avere un'altra volta.

C'è una riga di comando utile per questo? Ho fatto un po 'di Google, ho letto la pagina man datee non ho trovato nulla del genere. wcalcnon sembra gestire i calcoli del tempo.

EDIT: 6 marzo 2015. Questo è lo script con cui ho finito per usare le ore decimali. Potrebbe essere utile un controllo degli errori per assicurarsi che HH: MM usi 2 cifre per le ore.

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

Risposte:


27

Riga di comando:

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

$now conterrà il tempo specificato.

Puoi mettere molte cose tra "e"; come l'ora corrente e aggiungere 105 ad esso.


$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

Nessun decimale consentito ...


Dai commenti: per ottenere la risposta per 1,45 ore decimali:

$ now=$(date -d "06:45 today + $((145 * 60 / 100)) minutes" +'%H:%M')
$ echo "$now:
8:12

Squeee! Grazie! Ho avuto difficoltà a leggere l'ultima parte, ma la parte attorno a% H:% M sono due virgolette singole. C'è un modo per farlo in ore decimali invece di convertirlo in minuti? Ciò eliminerebbe un passo. Sarei persino aperto all'installazione di una calcolatrice speciale. Apprezzo molto il tuo lavoro, per favore non fraintendere.
Bulrush,

"+10 giorni" funziona anche. Così fa "+2 ora". Ovviamente potresti anche aggiungere un metodo qui per fare minuti da 2,5 ore;) Non ho mai trovato un elenco completo di parole che puoi usare ...
Rinzwind

@Bulrush hmm nessun decimale consentito con ora: D
Rinzwind

@Rinzwind Non ne sono sicuro ma ci hai provato 2:30 hourinvece 2.5 hour?
αғsнιη,

1
@Rinzwind Quindi uno possibile sta usando 2 hour + 30 minutes;)
αғsнιη il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.