如果我在终端中执行以下命令
start=$(date +%s)
# wait a few seconds …
end=$(date +%s)
time=$(dc <<< "$end $start -p")
echo "$time"
echo "$(date -jr $time +%H:%M:%S)"
我得到了奇怪的输出
10 # This is ok, I executed the second line ten seconds after the first one
01:00:10 # But here *** where does the one hour come from?
有人能解释一下我们的代码来自哪里吗 (我使用的是 Mac OS 10.8)?
如果没有办法抑制这种情况,如何改变输出或实现相同的效果?
答案1
date -jr 接受 unix 时间戳(自 1970 年 1 月 1 日午夜以来的秒数,GMT)并将其转换为等效的本地时间。我敢打赌,您运行的时区比 GMT 早一个小时。例如,GMT 中的 1970 年 1 月 1 日午夜后十秒相当于 CET 中的 1970 年 1 月 1 日午夜后一小时十秒。
如果您使用“-u”开关,您将获得 UTC 时间。因此这可能对您有用:
date -jur 10 '+%H:%M:%S'