使用 date(1) 格式化日期多了一个小时

使用 date(1) 格式化日期多了一个小时

如果我在终端中执行以下命令

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'

相关内容