Если я выполняю следующие команды в терминале

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 ответ1

2

date -jr принимает метку времени Unix (количество секунд с полуночи 1 января 1970 г. по Гринвичу) и преобразует ее в эквивалентное местное время. Держу пари, что вы работаете в часовом поясе, который на час опережает время по Гринвичу. Десять секунд после полуночи 1 января 1970 года по Гринвичу - это, например, один час и десять секунд после полуночи 1 января 1970 года в СЕТ.

Если вы используете ключ «-u», вы получите время UTC. Так что это может работать для вас:

date -jur 10 '+%H:%M:%S'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .