Se o tempo absoluto for a sua principal preocupação, provavelmente é melhor trabalhar com o UTC como ele existe para esse fim. A resposta de Michael é muito útil para quando você precisa trabalhar dentro do problema, mas geralmente é uma boa idéia evitá-lo totalmente onde puder.
Quando seu sistema não está definido como UTC por padrão, a maneira mais simples de passar o fuso horário é prefixando seu comando com a TZ
variável de ambiente. Isso limita a opção de zona a um único comando e evita que a variável vaze nos comandos subseqüentes.
$ 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
O que você não deve fazer é exportar a TZ
variável, pois isso pode tornar as coisas muito confusas para solucionar problemas, conforme demonstrado a seguir.
$ 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
embora ...