Если абсолютное время - ваша главная задача, вероятно, лучше работать вне UTC, поскольку оно существует для этой цели. Ответ Михаэля очень полезен, когда вам нужно поработать над проблемой, но обычно хорошей идеей является избегать ее полностью, где вы можете.
Если ваша система не установлена в UTC по умолчанию, самый простой способ передать часовой пояс - это поставить перед командой префикс TZ
переменной среды. Это ограничивает переключение зоны одной командой и предотвращает утечку переменной в ваши последующие команды.
$ NOW=$(date '+%s')
$ date -d @$NOW
Wed Jun 11 23:44:35 EDT 2014
$ TZ=UTC date -d @$NOW
Thu Jun 12 03:44:35 UTC 2014
Чего не следует делать, так это экспортировать TZ
переменную, поскольку это может привести к путанице в устранении неполадок, как показано в следующем примере.
$ export TZ=UTC
$ date -d @$NOW
Thu Jun 12 03:44:35 UTC 2014
$ TZ=EDT date -d @$NOW
Thu Jun 12 03:44:35 EDT 2014
date
...