如何在指定时间增加n小时?


15

我想有一个时间,例如6:45 am,并增加一些时间,例如1.45小时,以得出另一个时间。因此,我想在上午6:45时增加1.45小时以获取其他时间。

有命令行工具吗?我已经完成了一些谷歌搜索,并阅读了手册页date,却没有找到类似的东西。wcalc似乎不处理时间计算。

编辑:2015年3月6日。这是我最终使用小数小时的脚本。它可能会使用一些错误检查来确保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"

Answers:


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周围的部分是两个单引号。有什么办法可以在十进制小时内完成操作,而不是将其转换为分钟吗?那将消除一个步骤。我什至愿意安装一个特殊的计算器。不过,我非常感谢您的工作,请不要误会。
纸莎草2014年

“ +10天”也适用。“ +2小时”也是如此。当然,您也可以在此处添加一种方法,使分钟数从2.5小时开始;)我从未找到可以使用的单词的完整列表...
Rinzwind 2014年

@Bulrush嗯,不允许带小数点的小时:D
Rinzwind 2014年

@Rinzwind我不确定,但是您尝试2:30 hour2.5 hour吗?
αғsнιη

1
@Rinzwind因此,一种可能正在使用2 hour + 30 minutes;)
αғsнιη2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.