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

¿Cómo comprobar en qué zona horaria en Linux?

Advertisement

¿Hay alguna manera de comprobar en qué zona horaria estoy actualmente en Linux?

Advertisement
Advertisement

Respuestas (12)

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

Si te refieres a la consola, sólo escribe:

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

Si quieres la zona horaria numérica:

date +'%:z %Z'

Salida de la muestra:

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

Quería encontrar la zona horaria en forma de “US/Estado” o “Europa/Londres” en su lugar. Puedes encontrar esto en:

  • /etc/timezone (presente en Ubuntu y Red Hat? pero no e.g. Amazon Linux)
  • (en sistemas estilo Red Hat) como ZONE="US/Eastern" en /etc/sysconfig/clock
  • o puedes intentar hacer coincidir /etc/localtime con uno de los archivos en /usr/share/zoneinfo; molesto que esto no parezca ser un enlace simbólico, pero puedes e.g.
21
21
21
2011-07-11 04:59:58 +0000

Por lo general, la variable de entorno TZ te dirá algo útil. Sin embargo, es mejor usar funciones como mktime() y localtime() para convertir entre time_t y una representación de la zona horaria local. Es decir, no intentes hacer la conversión tú mismo.

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

Para ubuntu pruebe esto :

$ cat /etc/timezone

Salida de la muestra :

Asia/Kolkata

Para otra distribución Referencia : https://unix.stackexchange.com/questions/110522/timezone-setting-in-linux

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

A veces se puede buscar la zona horaria canónica en lugar de la forma corta como la producida por date %Z, por ejemplo US/Eastern. En los sistemas con timedatectl, por ejemplo Fedora, timedatectl produce mucha información útil, incluyendo la 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

Desafortunadamente, timedatectl toma set-timezone como un comando, pero no tiene un get-timezone correspondiente. Analícelo de la siguiente manera:

# 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

Así que estoy en Mountain Time. Aunque los consejos anteriores sobre el uso de la variable de entorno o sólo la salida del comando de la fecha a veces funcionan mejor, dependiendo de cómo se quiera usar eso.

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

Para la zona horaria, puedes usar la geolocalización:

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

O:

$ 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

Un par de soluciones:

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

me dieron (respectivamente):

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

Mi computadora está en UTC.

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

Puedes mostrar la fecha y la zona horaria simultáneamente:

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

A veces timedatectl set-timezone no actualiza /etc/timezone , por lo que es mejor obtener el tiemzone del nombre del archivo al que apunta el enlace simbólico /etc/timezone:

#!/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

Referencias: en esta respuesta .

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

Usar TZ o la fecha NO ES FIABLE porque te dice la zona horaria del USUARIO, no la zona horaria por defecto del sistema.

La zona horaria por defecto del sistema se almacena en /etc/timezone (que suele ser un enlace simbólico al archivo de datos de zona horaria específico de la zona horaria). Si no tiene una zona horaria /etc/timezone, mire en /etc/localtime. Generalmente esa es la zona horaria del “servidor”. /etc/localtime es a menudo un enlace simbólico a un archivo de zona horaria en /usr/share/zoneinfo. Esa ruta al archivo de zona horaria correcto a menudo también le dará información geográfica.

Los linux más nuevos tienen “timedatectl” que le da mucha información cuando se ejecuta el comando.

(como un nodo lateral, si tiene un sistema antiguo que todavía usa las viejas zonas horarias codificadas, probablemente puede copiar un archivo de zona horaria moderna en él y funcionará. He tenido que hacer esto muchas veces para resolver el cambio de zonas horarias en equipos antiguos).

Advertisement

Preguntas relacionadas

6
10
8
5
37
Advertisement
Advertisement