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 TZ
configuração e o date
comando. No rc
shell Bourne-like e -like, isso define a TZ
variável apenas para a linha de comando. Em outras conchas ( csh
, tcsh
, fish
), você sempre pode usar o env
comando:
env TZ=America/New_York date
tl; dr
Em sistemas Linux. fusos horários são definidos nos arquivos no /usr/share/zoneinfo
diretório 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 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 do UTC para o horário padrão; e a notação para definir como ocorre a transição para o horário de verão, se aplicável.
Por exemplo, o diretório "América" contém as informações necessárias para Nova York no arquivo America/New_York
conforme usado acima.
Cuidado que a especificação de uma zona inexistente (nome do arquivo) é silenciosamente ignorada e os horários UTC são relatados. Por exemplo, isso informa um horário incorreto:
TZ="America/New York" date ### WRONG ###
A Especificação Única do UNIX, 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 método alternativo à especificação de fusos horários usando um nome de caminho para um arquivo de descrição, o SUSv3 descreve o modelo POSIX. Nesse formato, uma sequência é definida como:
std offset [dst[offset][,start-date[/time],end-date[/time]]]
onde 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 valor offset
é positivo para os fusos horários a oeste do meridiano principal e negativo para os a leste do meridiano. O deslocamento é adicionado à hora local para obter o UTC (anteriormente conhecido como GMT). Os campos start
e end
hora indicam quando ocorrem as transições padrão / horário de verão.
Por exemplo, no leste dos Estados Unidos, o horário padrão é 5 horas mais cedo que o UTC e podemos especificar EST5EDT
em vez de America/New_York
. No entanto, essas alternativas nem sempre são reconhecidas, especialmente para zonas fora dos Estados Unidos, e devem ser evitadas.
O HP-UX (um UNIX compatível com SUSv3) usa regras de texto /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.
NOTA: Você deve ser capaz de encontrar todos os fusos horários inspecionando o seguinte diretório: /usr/share/zoneinfo
.