se $ TZ não estiver definido e / etc / localtime for UTC, então por que você está usando o fuso horário T (Tango) no comando date?
No meu sistema eu tenho um horário local do EDT.
# date
Wed Mar 18 12:39:03 EDT 2015
# date -d "1970-01-01 00:00:00" "+%s"
18000
Se eu forçar o Tango, obtenho um número negativo:
# date -d "1970-01-01T00:00:00" "+%s"
-25200
Se eu alterar meu fuso horário para UTC, ele funcionará como esperado:
# export TZ=UTC
# date
Wed Mar 18 16:41:23 UTC 2015
# date -d "1970-01-01 00:00:00" "+%s"
0
da página de manual de datas:
DATE STRING
The --date=STRING is a mostly free format human readable date string such as "Sun, 29 Feb 2004 16:21:42
-0800" or "2004-02-29 16:21:42" or even "next Thursday". A date string may contain items indicating calendar
date, time of day, time zone, day of week, relative time, relative date, and numbers. An empty string indi-
cates the beginning of the day. The date string format is more complex than is easily documented here but is
fully described in the info documentation.
Como você pode ver, é uma "data de leitura humana em formato livre, na maioria das vezes", ele selecionará o fuso horário de qualquer lugar que achar melhor. É muito fácil testá-lo.
Por exemplo:
# date
Wed Mar 18 13:05:42 EDT 2015
agora com o tempo do Tango:
[root@wailea ~]# date -d "2015-3-18T13:05:42"
Wed Mar 18 02:05:42 EDT 2015
agora com o tempo do Tango no final:
[root@wailea ~]# date -d "2015-3-18 13:05:42 T"
Wed Mar 18 02:05:42 EDT 2015
agora, hora do zulu:
[root@wailea ~]# date -d "2015-3-18Z13:05:42"
Wed Mar 18 09:05:42 EDT 2015
Eu acho que você pode ver o ponto. Se você não estiver familiarizado com fusos horários militares, veja a lista: link
Você também pode tentar usar o zdump para ver se o seu arquivo de zona não é realmente o que você está esperando:
Zdump prints the current time in each zonename named on the command line.
# zdump /etc/localtime
/etc/localtime Wed Mar 18 21:21:04 2015 EDT