Один час слишком много в форматировании даты с использованием даты (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 (количество секунд с полуночи 1 января 1970 г. по Гринвичу) и преобразует ее в эквивалентное местное время. Держу пари, вы работаете в часовом поясе, который на час опережает время по Гринвичу. Десять секунд после полуночи 1 января 1970 года по Гринвичу - это, например, один час и десять секунд после полуночи 1 января 1970 года в СЕТ.
Если вы используете ключ "-u", вы получите время UTC. Так что это может работать для вас:
date -jur 10 '+%H:%M:%S'