在日志文件中,我需要按以下格式打印经过的时间:
"Process completed %s - Elapsed %s",
<time now in HH:MM:SS format>,
<difference from start date to end date in HH:MM:SS format>
Run Code Online (Sandbox Code Playgroud)
例子:
Process completed 23:57:59 - Elapsed 103:22:59
Run Code Online (Sandbox Code Playgroud)
我怎么能做到这一点?
Ksh 有一个特殊参数SECONDS,它总是包含自纪元以来的秒数。$SECONDS在工作开始和结束时进行评估为您提供开始和结束时间,不同之处在于经过的时间。
Unix 时间不考虑闰秒:Unix 时间中的一天总是正好 86400 秒。因此,Unix 时间的时间算法很容易。
start=$SECONDS
…
end=$SECONDS
elapsed=$((end - start))
printf 'Process completed %d:%02d:%02d - Elapsed %d:%02d:%02d\n' \
$((end / 3600)) $((end / 60 % 60)) $((end % 60)) \
$((elapsed / 3600)) $((elapsed / 60 % 60)) $((elapsed % 60))
Run Code Online (Sandbox Code Playgroud)