Як додати n годин до заданого часу?


15

Я хотів би провести час, скажімо, 6:45 ранку і додати кількість годин, скажімо, 1,45 години, щоб отримати результат у інший час. Тому я хотів би додати 1,45 години до 6:45 ранку, щоб отримати інший час.

Чи є для цього корисний командний рядок? Я зробив якийсь гуглінг, і прочитав сторінку чоловіка, dateі нічого подібного не знайшов. wcalcСхоже, не справляється з розрахунками часу.

EDIT: 6 березня 2015. Це сценарій, з яким я закінчив використовувати десяткові години. Може перевірити помилку, щоб переконатися, що HH: MM використовує 2 цифри протягом годин.

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

Відповіді:


27

Командний рядок:

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

$now буде утримувати вказаний вами час.

Ви можете помістити багато речей між "і"; як поточний час, і додайте до нього 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

Не допускається децималій ...


З коментарів: Щоб отримати відповідь за 1,45 десяткових годин:

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

Стисніть! Дякую! У мене були проблеми з читанням останньої частини, але частина навколо% H:% M - це дві одиничні лапки. Чи можна це зробити за десяткові години, а не перетворювати їх на хвилини? Це усуне крок. Я навіть був би відкритий для встановлення спеціального калькулятора. Я ціную вашу роботу, хоча, будь ласка, не розумійте.
Bulrush

"+10 днів" теж працює. Так само "+2 години". Звичайно, ви можете також додати тут метод, щоб зробити хвилин за 2,5 години;) Я ніколи не знайшов повного списку слів, якими ви можете скористатися ...
Rinzwind

@Bulrush hmm без десяткових знаків не дозволено з годиною: D
Rinzwind

@Rinzwind Я не впевнений, але ти намагався 2:30 hourзамість цього 2.5 hour?
αғsnιη

1
@Rinzwind Отже, одним із можливих є використання 2 hour + 30 minutes;)
αғsnιη
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.