¿Cómo agregar n horas a un tiempo específico?


15

Me gustaría tener un tiempo, digamos 6:45 am, y agregar una cantidad de horas, digamos 1.45 horas, para dar como resultado otro tiempo. Por lo tanto, me gustaría agregar 1.45 horas a las 6:45 am para obtener otro momento.

¿Hay una línea de comando útil para eso? Busqué en Google y leí la página del manual datey no he encontrado nada de eso. wcalcno parece manejar los cálculos de tiempo.

EDITAR: 6 de marzo de 2015. Este es el guión que terminé para usar horas decimales. Podría usar alguna comprobación de errores para asegurarse de que HH: MM use 2 dígitos para las 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=$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"

Respuestas:


27

Línea de comando:

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

$now retendrá el tiempo que especificó.

Puede poner muchas cosas entre "y"; como la hora actual y agregue 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

No se permiten decimales ...


De los comentarios: para obtener la respuesta de 1,45 horas decimales:

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

Squeee! ¡Gracias! Tuve problemas para leer la última parte, pero la parte alrededor del% H:% M son dos comillas simples. ¿Hay alguna manera de hacer esto en horas decimales en lugar de convertirlo en minutos? Eso eliminaría un paso. Incluso estaría abierto a instalar una calculadora especial. Sin embargo, aprecio tu trabajo, por favor no me malinterpreten.
Bulrush

"+10 días" también funciona. También lo hace "+2 hora". Por supuesto, también podría agregar un método aquí para hacer minutos desde 2.5 horas;) Nunca encontré una lista completa de palabras que puede usar ...
Rinzwind

@Bulrush hmm no se permiten decimales con la hora: D
Rinzwind

@Rinzwind No estoy seguro, pero ¿lo intentaste en 2:30 hourlugar de 2.5 hour?
αғsнιη

1
@Rinzwind Así que uno posible está usando 2 hour + 30 minutes;)
αғsнιη
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.