2011-07-11 04:57:39 +0000 2011-07-11 04:57:39 +0000
135
135
Advertisement

Como verificar que fuso horário no Linux?

Advertisement

Existe alguma forma de verificar em que fuso horário estou actualmente no Linux?

Advertisement
Advertisement

Respostas (12)

252
252
252
2011-07-11 05:01:26 +0000

Se se refere à consola, digite apenas:

date +%Z
58
58
58
2015-02-13 16:22:27 +0000

Se quiser o fuso horário numérico:

date +'%:z %Z'

Saída de amostra:

-05:00 EST
26
Advertisement
26
26
2013-08-31 09:58:18 +0000
Advertisement

Queria antes encontrar o fuso horário na forma “US/Eastern” ou “Europe/London”. Pode encontrar isto em:

  • /etc/timezone (presente no Ubuntu e Red Hat? mas não por exemplo no Amazon Linux)
  • (em sistemas estilo Red Hat) como ZONE="US/Eastern" em /etc/sysconfig/clock
  • ou pode tentar combinar o /etc/localtime com um dos ficheiros em /usr/share/zoneinfo; irritantemente isto não parece ser uma ligação simbólica, mas pode, por exemplo
21
21
21
2011-07-11 04:59:58 +0000

Normalmente, a variável de ambiente TZ dir-lhe-á algo útil. No entanto, é melhor usar funções como mktime() e localtime() para converter entre time_t e uma representação de fuso horário local. Isto é, não tente fazer a conversão você mesmo.

13
Advertisement
13
13
2016-05-10 10:50:27 +0000
Advertisement

Para o ubuntu tente isto :

$ cat /etc/timezone

Saída de amostra :

Asia/Kolkata

Para outras distro Referência : https://unix.stackexchange.com/questions/110522/timezone-setting-in-linux

7
7
7
2016-09-13 21:16:56 +0000

Por vezes pode estar à procura do fuso horário canónico em vez da forma curta produzida por date %Z, por exemplo, US/Eastern. Em sistemas com timedatectl e.g. Fedora, timedatectl produz muita informação útil, incluindo a zona actual:

# timedatectl
      Local time: Tue 2016-09-13 17:10:26 EDT
  Universal time: Tue 2016-09-13 21:10:26 UTC
        RTC time: Tue 2016-09-13 21:10:26
       Time zone: US/Eastern (EDT, -0400)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

Infelizmente, timedatectl toma set-timezone como comando, mas não tem get-timezone correspondente. Analise-o da seguinte forma:

# timedatectl status | grep "zone" | sed -e 's/^[]*Time zone: \(.*\) (.*)$//g'`
US/Eastern
4
Advertisement
4
4
2015-07-22 04:58:52 +0000
Advertisement
$ strings /etc/localtime | tail -n 1
MST7MDT,M3.2.0,M11.1.0

Então estou no tempo da montanha. Embora os conselhos acima sobre a utilização de variáveis de ambiente ou apenas comandos de data funcionem por vezes melhor, dependendo de como pretende utilizar isso.

3
3
3
2018-07-01 14:02:51 +0000

Para o fuso horário, pode usar geolocalização:

$ curl https://ipapi.co/timezone
America/Chicago

Ou:

$ curl http://ip-api.com/line?fields=timezone
America/Chicago

http://wiki.archlinux.org/index.php/time#Time_zone

1
Advertisement
1
1
2018-04-16 15:36:04 +0000
Advertisement

Um par de soluções:

date +"%Z %z"
timedatectl | grep "Time zone"
cat /etc/timezone

me deram (respectivamente):

UTC +0000
Time zone: Etc/UTC (UTC, +0000)
Etc/UTC

O meu computador está no UTC.

0
0
0
2018-08-05 07:51:54 +0000

Pode mostrar a data e o fuso horário ao mesmo tempo:

date +'%d/%m/%Y %H:%M:%S [%:z %Z]'
0
0
0
2018-06-26 06:54:56 +0000

Por vezes timedatectl set-timezone não actualiza /etc/timezone , por isso é melhor obter a tiemzone do nome do ficheiro que o symlink /etc/timezone aponta para:

#!/bin/bash
set -euo pipefail

if filename=$(readlink /etc/localtime); then
    # /etc/localtime is a symlink as expected
    timezone=${filename#*zoneinfo/}
    if [[$timezone = "$filename" || ! $timezone =~ ^[^/]+/[^/]+$ ]]; then
        # not pointing to expected location or not Region/City
        >&2 echo "$filename points to an unexpected location"
        exit 1
    fi
    echo "$timezone"
else # compare files by contents
    # https://stackoverflow.com/questions/12521114/getting-the-canonical-time-zone-name-in-shell-script#comment88637393_12523283
    find /usr/share/zoneinfo -type f ! -regex ".*/Etc/.*" -exec \
        cmp -s {} /etc/localtime \; -print | sed -e 's@.*/zoneinfo/@@' | head -n1
fi

Referências: em esta resposta .

0
0
0
2017-11-15 00:31:57 +0000

A utilização de TZ ou data NÃO É FELICITÁVEL porque indica o fuso horário do utilizador e não o fuso horário padrão do sistema.

O fuso horário padrão do sistema é armazenado em /etc/timezone (que é muitas vezes uma ligação simbólica ao ficheiro de dados do fuso horário específico para o fuso horário). Se não tiver um /etc/timezone, veja o /etc/localtime. Geralmente esse é o fuso horário do “servidor”. O /etc/localtime é frequentemente um link simbólico para um ficheiro de fuso horário em /usr/share/zoneinfo. Esse caminho para o arquivo de fuso horário correto muitas vezes também lhe dará informações geográficas.

Os novos linux têm “timedatectl” que lhe dá toneladas de informações quando o comando é executado.

(como um nó lateral, se você tem um sistema antigo que ainda usa os fusos horários codificados OLD, você provavelmente pode copiar um arquivo de fuso horário moderno para ele e ele funcionará. Tive de fazer isto muitas vezes para resolver alterações de fusos horários em equipamentos mais antigos).

Advertisement

Questões relacionadas

6
10
5
37
16
Advertisement
Advertisement