Sté*_*las 19
为了避免竞争条件,仍然假设 GNU 日期:
eval "$(date +'today=%F now=%s')"
midnight=$(date -d "$today 0" +%s)
echo "$((now - midnight))"
Run Code Online (Sandbox Code Playgroud)
使用zsh,您可以在内部进行:
zmodload zsh/datetime
now=$EPOCHSECONDS
strftime -s today %F $now
strftime -rs midnight %F $today
echo $((now - midnight))
Run Code Online (Sandbox Code Playgroud)
便携,在没有夏令时开关的时区,你可以这样做:
eval "$(date +'h=%H m=%M s=%S')"
echo "$((${h#0} * 3600 + ${m#0} * 60 + ${s#0}))"
Run Code Online (Sandbox Code Playgroud)
的${X#0}是剥离一个前导0这在某些壳状bash,dash并posh带有原因的问题09(其中壳抱怨它是一个无效的八进制数)。
Ipo*_*cer 11
不需要任何算术表达式,只需使用纯日期:
date -d "1970-01-01 UTC $(date +%T)" +%s
Run Code Online (Sandbox Code Playgroud)