このdate
プログラムを使用して真夜中からの秒数を計算するにはどうすればよいですか?
ベストアンサー1
競合状態を避けるために、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))
夏時間スイッチがない時間帯では便利に次のようにできます。
eval "$(date +'h=%H m=%M s=%S')"
echo "$((${h#0} * 3600 + ${m#0} * 60
+ ${s#0}))"
それがすることは先行ゼロを削除することですが、これは 、${X#0}
などの一部のシェルで問題を引き起こします (シェルが無効な 8 進数と文句を言うところ)。bash
dash
posh
08
09