在bash中减法

时间:2016-12-22 02:29:54

标签: bash date

printf "$(( $(date '+%H * 60 + %M') ))\n"
date '+%H * 60 + %M' | bc
date '+%H 60 * %M + p' | dc

以上将给出当天通过的会议记录。

使用上述任何时间输出,我如何从当天的总分钟数(即1440)中减去它以显示当天剩余的分钟数?

3 个答案:

答案 0 :(得分:2)

鉴于你的三个范例,那么:

printf "$(( 1440 - ( $(date '+%H * 60 + %M') ) ))\n"
date '+1440 - ( %H * 60 + %M )' | bc
date '+1440 %H 60 * %M + - p' | dc

您并不需要添加所有空格,但您需要添加括号。

答案 1 :(得分:0)

您可以使用以下内容:

minutesElapsed="$(date '+%H * 60 + %M' | bc)"
minutesDay="1440" 
minutesLeft="$(($minutesDay-$minutesElapsed))"

输出:

echo "$minutesLeft"
332

简短版本:

echo "$((1440-$(date '+%H * 60 + %M' | bc)))"

答案 2 :(得分:0)

以下计算以分钟为单位的时间戳差异:

printf '%d\n' $(( ( $(date -d 'tomorrow 00:00' '+%s') - $(date '+%s') ) / 60 ))

请注意格式字符串%d\n的使用。您不应该在printf的第一个参数中传递数据,因为第一个参数是格式字符串,printf可能会将某些序列解释为格式说明符({ {1}}作为整数说明符,%d作为字符串说明符等。)。