Вопрос: Как проверить, какой часовой пояс в Linux?


Есть ли способ проверить, какой часовой пояс я сейчас нахожу в Linux?


118
2017-07-11 04:57


Источник




Ответы:


Обычно TZ переменная среды скажет вам что-то полезное. Однако лучше всего использовать такие функции, как mktime() а также localtime() конвертировать между time_t и представление местного часового пояса. То есть, не пытайтесь сделать преобразование самостоятельно,


17
2017-07-11 04:59



есть ли какая-либо команда, которая сообщает о часовом поясе, в котором находится пользователь?
Конечно, date скажу тебе. - Greg Hewgill
У меня есть два экземпляра сервера, если я даю команду «date» на обоих серверах, он показывает разное время. часовой пояс для обоих серверов - IST, время одного сервера: Пн Июл 11 10:39:31 IST 2011 и другой сервер Пн Июл 11 10:35:31 IST 2011 .. есть разница 4 минуты
О точной панголине echo $TZ ничего не возвращает для меня. - Iain Samuel McLean Elder
@GregHewgill ваш ответ не поможет при первом просмотре. Подумайте, как отредактировать ваш ответ. См. Наиболее проголосовавший ответ ниже. На данный момент я оставлю свой ответ. Также на моих машинах нет TZ env по умолчанию. - therealmarv


Если вы имеете в виду консоль, просто введите:

date +%Z

230
2017-07-11 05:01



хорошо, хорошо работает. - Silver Moon
это должен быть принятый ответ - KalenGi
хороший момент ... изменил ответ на этот эффект - Rasman
И чтобы установить часовой пояс из командной строки в Ubuntu, следующая ссылка предоставляет тривиальную команду с 1 строкой для этого: askubuntu.com/a/524362/182454 - Dan Nissenbaum
Это дает +07 для меня. Получить Region/City на Linux под управлением Debian / Arch, см. этот ответ, - Tom Hale


Если вам нужен часовой пояс:

date +'%:z %Z'

Пример вывода:

-05:00 EST

47
2018-02-13 16:22



В OS X эти выходы :z EST - suspectus
Это если для линукс, - Paul Vargas
Точнее, это относится к GNU date, Версия BusyBox печатает что-то нечувственное, «%: z CEST» в моем случае. - Léo Lam
Однако дата +% z отлично работает на OS X. Я предлагаю вам изменить ответ. - Neil Mayhew
Привет, @NeilMayhew Спасибо! Humm ... но вопрос имеет теги linux  ubuntu-10.04 - Paul Vargas


Вместо этого я хотел найти часовой пояс в форме «США / Восток» или «Европа / Лондон». Вы можете найти это в:

  • / etc / timezone (присутствует на Ubuntu и Red Hat ?, но не, например, Amazon Linux)
  • (в системах стиля Red Hat), как ZONE="US/Eastern" в / etc / sysconfig / clock
  • или вы можете попробовать и сопоставить / etc / localtime с одним из файлов в / usr / share / zoneinfo; досадно, это не похоже на символическую ссылку, но вы можете, например,

    cd / usr / share / zoneinfo
      find * -type f -exec sh -c "diff -q / etc / localtime '{}'> / dev / null && echo {}" \;

    найти подходящие файлы - есть, вероятно, лучшие способы сделать это, но это работает. Будет много совпадений.


22
2017-08-31 09:58



find /usr/share/zoneinfo/ -type f| xargs md5sum | grep $(md5sum /etc/localtime | cut -d' ' -f1) - freiheit


Для ubuntu попробуйте следующее:

$ cat /etc/timezone

Пример вывода:

Asia/Kolkata

Для других дистрибутивов Ссылка: https://unix.stackexchange.com/questions/110522/timezone-setting-in-linux


8
2018-05-10 10:50



Иногда timedatectl set-timezone не обновляет /etc/timezone, Видеть этот ответ для решения, основанного на /etc/localtime, - Tom Hale


$ strings /etc/localtime | tail -n 1
MST7MDT,M3.2.0,M11.1.0

Поэтому я нахожусь в Mountain Time. Хотя рекомендации выше о том, как использовать переменную среды или только команду даты, иногда работают лучше, в зависимости от того, как вы хотите ее использовать.


4
2017-07-22 04:58





Иногда вы можете искать канонический часовой пояс, а не короткую форму, создаваемую date %Z например US/Eastern, О системах с timedatectl например Fedora, timedatectl выводит много полезной информации, включая текущую зону:

# 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

К сожалению, timedatectl принимает set-timezone как команда, но не имеет соответствующих get-timezone, Разберите его следующим образом:

# timedatectl status | grep "zone" | sed -e 's/^[ ]*Time zone: \(.*\) (.*)$/\1/g'`
US/Eastern

4
2017-09-13 21:16





  • / etc / sysconfig / clock устанавливает, хранятся ли аппаратные часы в формате UTC или по местному времени.
  • Symlink / etc / localtime / usr / share / zoneinfo / ..., чтобы установить часовой пояс.
  • Тип /sbin/hwclock --systohc [--utc] для установки аппаратных часов.

Ядро Linux всегда хранит и вычисляет время как количество секунд с полуночи 1 января 1970 года UTC, независимо от того, хранятся ли ваши аппаратные часы в формате UTC или нет. Конверсии по местному времени выполняются во время выполнения. Одна из опрятных вещей в том, что если кто-то использует ваш компьютер из другого часового пояса, они могут установить переменную окружения TZ, и все даты и время будут отображаться правильно для их часового пояса.

Если количество секунд с 1 января 1970 г. UTC хранится как подписанное 32-битное целое число (как и в вашей системе Linux / Intel), ваши часы перестанут работать в 2038 году. У Linux нет неотъемлемой проблемы Y2K , но у него есть проблема 2038 года. Надеюсь, к этому времени мы все будем запускать Linux на 64-битных системах. 64-битные целые числа будут поддерживать наши часы достаточно хорошо, примерно до 292271 миллионов долларов.


2
2017-07-11 05:01





Использование TZ или date НЕ НАДЕЖНО, потому что оно указывает часовой пояс USER, а не часовой пояс по умолчанию.

Часовой пояс по умолчанию сохраняется в / etc / timezone (который часто является символической ссылкой на файл данных часового пояса, специфичный для часового пояса). Если у вас нет / etc / timezone, посмотрите / etc / localtime. Как правило, это «часовой пояс» сервера. / etc / localtime часто является символической ссылкой на файл часового пояса в / usr / share / zoneinfo. Этот путь к правильному файлу часовых поясов часто дает вам информацию о географии.

У нового linux есть timedatectl, который дает вам тонны информации при запуске команды.

(в качестве бокового узла, если у вас есть древняя система, которая по-прежнему использует OLD жестко закодированные тайм-зоны, вы, вероятно, можете скопировать на нее современный файл часового пояса, и он будет работать. Мне приходилось делать это много раз, чтобы разрешить изменение часовых поясов на устаревшем оборудовании).


0
2017-11-15 00:31