Como obtenho a hora atual em um fuso horário diferente sem alterar a hora do sistema? [duplicado]

17
    

Esta pergunta já tem uma resposta aqui:

    

Estou tentando usar "data" para obter o horário em um fuso horário diferente e falhando. Todos os métodos que encontrei no google envolvem a alteração do fuso horário no sistema, mas não é isso que eu quero.

Existe um único comando que retornará a hora atual em um fuso horário diferente do meu?

    
por ID-ZERO 14.06.2015 / 11:11

3 respostas

26

Os fusos horários são listados em /usr/share/zoneinfo . Se você quisesse a hora atual em Cingapura, por exemplo, poderia passar isso para date :

TZ=Asia/Singapore date
Sun Jun 14 17:17:49 SGT 2015

Para simplificar este procedimento, se você precisar estabelecer frequentemente a hora local em diferentes fusos horários, você pode adicionar algumas funções ao seu arquivo shell rc (por exemplo, .bashrc ):

zones() { ls /usr/share/zoneinfo/"$1" ;}
zone() { TZ="$1"/"$2" date; }

O primeiro imprimirá a lista de zonas correta para uma região e, munida dessa informação, você poderá imprimir a hora local.

    
por 14.06.2015 / 11:18
11

Você pode usar zdump :

NAME
       zdump - timezone dumper

SYNOPSIS
       zdump [ --version ] [ --help ] [ -v ] [ -c [loyear,]hiyear ] [ zonename ... ]

DESCRIPTION
       Zdump prints the current time in each zonename named on the command line.

Exemplo:

$ zdump ~$ zdump Iceland
Iceland  Sun Jun 14 09:40:30 2015 GMT

$ zdump Japan
Japan  Sun Jun 14 18:34:36 2015 JST

O arquivo de dados do fuso horário está localizado em /usr/share/zoneinfo .

Você também pode imprimir o tempo de todos por find /usr/share/zoneinfo/ -type f | xargs zdump . E pode grep para exemplo particular para dubai

$ find /usr/share/zoneinfo/ -type f | xargs zdump | grep -i Dubai
/usr/share/zoneinfo/right/Asia/Dubai                      Sun Jun 14 13:38:26 2015 GST
/usr/share/zoneinfo/Asia/Dubai                            Sun Jun 14 13:38:51 2015 GST

Você pode usar gworldclock : -

NAME
       gworldclock - Displays time and date in specified time zones.

SYNOPSIS
       gworldclock [ -f FILE ]

DESCRIPTION
       gworldclock  displays  the  time  and  date of specified time zones using a GTK+ interface. It also allows the
       zones to be "rendezvoused" or "synchronised" to a time other than the current time.

    
por 14.06.2015 / 11:31
9

Quase todos os programas usam a variável de ambiente TZ para determinar o fuso horário e voltam à configuração do sistema se essa variável não estiver definida.

TZ=Pacific/Yap date
TZ=Pacific/Yap xclock

Quase todos os sistemas operacionais (até mesmo o Windows) usam informações de fuso horário do banco de dados da IANA . A maioria dos fusos horários tem um nome no formato Continent/Town , em que Cidade é normalmente a maior cidade de um país ou região que define suas próprias regras de fuso horário. Algumas abreviações são definidas, como CET para o horário da Europa Central e EST para o horário padrão do leste, mas elas podem não ser sempre o que você espera devido a conflitos entre localidades (por exemplo, EST é EUA, não Austrália) . As regras de fuso horário geralmente são definidas por arquivos em /usr/share/zoneinfo , /usr/lib/zoneinfo , /usr/lib/locale/TZ ou algum local semelhante.

Também existem valores padrão para a variável TZ . Se você quiser um deslocamento fixo do UTC, você pode usar algo como TZ=-4 (4 horas a leste do GMT) ou TZ=9:30 (9½ horas a oeste do GMT).

    
por 14.06.2015 / 18:35