Você pode definir um fuso horário para a duração da consulta, assim:
TZ=America/New_York date
Observe o espaço em branco entre a configuração TZ
e o comando date
. Em shell parecido com Bourne e rc
, isso define a variável TZ
apenas para a linha de comando. Em outros shells ( csh
, tcsh
, fish
), você sempre pode usar o comando env
:
env TZ=America/New_York date
tl; dr
Nos sistemas Linux. fusos horários são definidos em arquivos no diretório /usr/share/zoneinfo
. Essa estrutura é geralmente chamada de "banco de dados Olson" para homenagear seu colaborador fundador.
As regras para cada fuso horário são definidas como linhas de arquivo de texto que são então compiladas em um arquivo binário. As linhas assim compiladas, definem o nome da zona; um intervalo de dados e tempo durante o qual a zona se aplica; um deslocamento de UTC para o horário padrão; e a notação para definir como ocorre a transição para e do horário de verão, se aplicável.
Por exemplo, o diretório "America" contém as informações necessárias para Nova York no arquivo America/New_York
, conforme usado acima.
Tenha em atenção que a especificação de uma zona inexistente (nome do ficheiro) é silenciosamente ignorada e os tempos UTC são reportados. Por exemplo, isso informa um tempo incorreto:
TZ="America/New York" date ### WRONG ###
A Single UNIX Specification, versão-3, conhecida como SUSv3 ou POSIX-2001, observa que, para portabilidade, a cadeia de caracteres que identifica a descrição do fuso horário deve começar com um caractere de dois-pontos. Assim, também podemos escrever:
TZ=":America/New_York" date
TZ=":America/Los_Angeles" date
Como um método alternativo para a especificação de fusos horários usando um nome de caminho para um arquivo de descrição, o SUSv3 descreve o modelo POSIX. Neste formato, uma string é definida como:
std offset [dst[offset][,start-date[/time],end-date[/time]]]
em que std
é o nome do componente padrão e dst
é o horário de verão. Cada nome consiste em três ou mais caracteres. O offset
é positivo para fusos horários a oeste do meridiano principal e negativo para aqueles a leste do meridiano. O deslocamento é adicionado à hora local para obter o UTC (anteriormente conhecido como GMT). Os campos start
e end
time indicam quando ocorrem as transições padrão / de luz do dia.
Por exemplo, no leste dos Estados Unidos, o horário padrão é 5 horas antes do UTC e podemos especificar EST5EDT
em vez de America/New_York
. Essas alternativas nem sempre são reconhecidas, no entanto, especialmente para zonas fora dos Estados Unidos e devem ser evitadas.
O HP-UX (um UNIX compatível com SUSv3) usa regras textuais em /usr/lib/tztab
e os nomes POSIX como EST5EDT, CST6CDT, MST7MDT, PST8PDT. O arquivo inclui todas as regras históricas para cada fuso horário, semelhante ao banco de dados Olson.
OBSERVAÇÃO: você deve conseguir encontrar todos os fusos horários inspecionando o seguinte diretório: /usr/share/zoneinfo
.