Como adicionar n horas a uma hora especificada?

9

Gostaria de ter um horário, digamos, às 6:45 da manhã e adicionar uma quantidade de horas, digamos de 1,45 horas, para resultar em outro horário. Então eu gostaria de adicionar 1,45 horas às 6h45 para ter outra hora.

Existe uma linha de comando útil para isso? Fiz algumas pesquisas no Google e li a man page de date e não encontrei nada parecido. wcalc parece não lidar com cálculos de tempo.

EDIT: 06 de março de 2015. Este é o script que acabei com o uso de horas decimais. Pode usar alguma verificação de erros para garantir que o HH: MM use 2 dígitos para as horas.

#!/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=
inhours=
# 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"
    
por Bulrush 24.12.2014 / 13:14

1 resposta

15

Linha de comando:

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

$now manterá o tempo que você especificou.

Você pode colocar muitas coisas entre o "e"; como o tempo atual e adicionar 105 a ele.

$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

Não são permitidos decimais ...

Dos comentários: para obter a resposta de 1,45 horas decimais:

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

Tags