我希望在Mac OS的bash午夜之前得到时间(与许多Linux发行版的日期实用程序不同)。
例如,在23:56:03我想得到:“00:03:59”。
答案 0 :(得分:2)
如果使用Unix时间戳,数学会更容易一些,Unix时间戳是过去某个固定时间(1970年1月1日)经过的秒数。我使用local
内置函数使它们成为函数的局部属性,以及设置变量的整数属性,因为它使得算术的语法更简单。
print_time_until_midnight () {
local -i now=$(date +%s)
if (( now % 86400 == 0 )); then
# If it is exactly midnight, say so
echo "Time remaining: 00:00:00"
return
fi
# Get the time for 00:00:00 *tomorrow* (the next midnight)
local -i midnight=$(date -v+1d -v0H -v0M -v0S +%s)
local -i S=midnight-now
local -i H=S/3600
S=S-H*3600
local -i M=S/60
S=S-M*60
echo "Time remaining: $H:$M:$S"
}
答案 1 :(得分:0)
OSX有日期命令
请参阅 - OSX Date man page
为了获得时间利用:
date +"%T"
您需要使用一些 BASIC 数学
#!/usr/bin/env bash
hours=`date +"%H"`
minutes=`date +"%M"`
seconds=`date +"%S"`
# Time till midnight
echo `expr 23 - ${hours}`" hours, "`expr 59 - ${minutes}`" minutes, and "`expr 59 - ${seconds}`" seconds "