我想在 Mac OS 上的 bash 中获得午夜之前的时间(它没有与许多 Linux 发行版相同的日期实用程序)。
例如,在 23:56:03 我想得到:“00:03:59”。
如果您使用 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"
}
OSX 有 date 命令
请参阅 - OSX 日期手册页
要获得时间,请使用:
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 "