我如何找到自午夜以来的秒数?


11

使用该date程序,如何计算自午夜以来的秒数?


1
日期“ +(%H * 60 +%M)* 60 +%S” | BC
groxxda 2014年

1
echo $(($(date'+(%H * 60 +%M)* 60 +%S')))
groxxda 2014年

Answers:


14

为了避免出现竞争情况,仍然假设GNU日期:

eval "$(date +'today=%F now=%s')"
midnight=$(date -d "$today 0" +%s)
echo "$((now - midnight))"

使用zsh,您可以在内部进行操作:

zmodload zsh/datetime
now=$EPOCHSECONDS
strftime -s today %F $now
strftime -rs midnight %F $today
echo $((now - midnight))

可移植地,在没有夏令时开关的时区中,您可以执行以下操作:

IFS=:
set -- $(date +%T)
echo "$((${1#0} * 3600 + ${2#0} * 60 + ${3#0}))"

${X#0}是剥离前导0这在某些壳喜欢bashdashposh引起问题09(其中壳抱怨它是一个无效的八进制数)。


非常聪明且善用eval
Ulrich Dangel 2014年

我宁愿使用以下方式:IFS=: read -r today now <<< $(date +%F:%s); midnight=$(date -d "$today 0" +%s); echo $(( now - midnight ))
x-yuri


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.