Установка временной зоны из терминала

Я хочу изменить часовой пояс системных часов с терминала.

Это можно сделать с помощью

tzselect

", который открывает gui в терминале"

или

sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime

", который будет установлен в gmt"

Но есть ли способ установить часовую зону с только смещением ie.-1 или +5 и т. д.

Мне нужно сделать это, так как я пишу приложение для настройки timeoffset или журналов отчетов, и единственная информация, которую я имею, - это IP-адрес пользователя. Я могу использовать webapp для поиска местоположения IP, но тогда мне нужно установить смещение, которое было бы легко, если бы я мог просто получить смещение местоположения, но если мне нужно найти зону и город, это будет настоящая боль .

Если кто-нибудь знает, как установить системные часы с +/- часом, было бы здорово.

171 голос | спросил user2155009 23 J000000Tuesday13 2013, 00:22:57

8 ответов


270

Чтобы изменить часовой пояс от терминала, просто нажмите Ctrl + Alt + T на клавиатуре, чтобы открыть терминал. Когда он откроется, запустите следующие команды:

sudo dpkg-reconfigure tzdata

После открытия просто следуйте экранам, чтобы изменить часовой пояс.

ответил Mitch 23 J000000Tuesday13 2013, 02:02:26
140

Вы также можете использовать новый timedatectl, чтобы установить время в 14.04.

sudo timedatectl set-timezone America/New_York
ответил Collin Anderson 15 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 15 Sep 2014 19:43:19 +0400 2014, 19:43:19
17

Вы можете использовать файлы GMT ± x в /usr/share/zoneinfo/Etc.

sudo ln -fs /usr/share/zoneinfo/Etc/GMT$offset /etc/localtime
ответил Ry- 23 J000000Tuesday13 2013, 00:43:02
16

Я понимаю, что этот поток немного устарел, но я искал лучшее решение, потому что мне нужно было автоматически установить часовой пояс в виртуальной машине после того, как пользователь загрузит его с нашего сайта и развозит его. Вот что я закончил:

echo "Setting TimeZone..."
export tz=`wget -qO - http://geoip.ubuntu.com/lookup | sed -n -e 's/.*<TimeZone>\(.*\)<\/TimeZone>.*/\1/p'` &&  timedatectl set-timezone $tz
export tz=`timedatectl status| grep Timezone | awk '{print $2}'`
echo "TimeZone set to $tz"

Это будет запрашивать geoip.ubuntu.com с сервера после его запуска в новой сети (мой скрипт проверяет первый курс подключения), а затем устанавливает часовой пояс сервера на основе ответа.

«wget -q0 -» сообщает wget выводить только результаты в stdout, которые затем передаются в переменную $ tz.

Надеюсь, это поможет кому-то!

ответил Clayton Dukes 25 ThuEurope/Moscow2014-12-25T06:22:50+03:00Europe/Moscow12bEurope/MoscowThu, 25 Dec 2014 06:22:50 +0300 2014, 06:22:50
10

TL; DR /etc/localtime - это символическая ссылка, указывающая на файл в /usr/share/zoneinfo/Continent/City. Изменяя, где он указывает, вы можете изменить часовой пояс.

Чтобы изменить часовой пояс, удалите /etc/localtime и назначьте символическую ссылку в нужный город. Например, ls -l /etc/localtime сообщает, что этот файл указывает на /usr/share/zoneinfo/America/Denver. Чтобы изменить его на Нью-Йорк, я делаю

  1. sudo rm /etc/localtime
  2. sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
  3. Подождите, пока мои часы не будут обновлены.

На следующем скриншоте показаны шаги и подтверждение из timedatectl

введите описание изображения здесь

ответил Sergiy Kolodyazhnyy 6 Mayam15 2015, 05:21:36
10

Простым способом обновления часового пояса является использование sudo dpkg-reconfigure tzdata. Но это не так легко написано.

Если вы хотите явно задать часовой пояс через сценарий (например, для настройки виртуальной машины), вот рецепт:

Установите переменную для требуемого часового пояса, например. один из

tz=Europe/London
tz=America/Anchorage
tz=Etc/GMT+6

Допустимыми значениями являются каталоги и имена файлов в разделе /usr/share/zoneinfo.

Тогда просто

sudo cp -vf /usr/share/zoneinfo/$tz /etc/localtime
echo $tz | sudo tee /etc/timezone

Обратите внимание, что оба /etc/localtime и /etc/timezone должны быть согласованными.

Возможно, теперь перезагрузитесь, чтобы также обновить все ваши службы (например, cron).

ответил Rick-777 13 Maypm15 2015, 21:13:03
3

Вот метод, который я использую, который является ориентированным на США, поскольку мне не нужно беспокоиться о часовых поясах, отличных от США.

Если мне нужно определить текущий часовой пояс, я либо делаю:

cat /etc/timezone  

или

sudo hwclock --show  

Затем я:

timedatectl set-timezone <_designation_>

где <_designation_> является одним из следующих:

US /Eastern
США /Центральный
США /Mountain
США /Pacific
США /Аляска
США /Алеутские
США /Аризона
США /East-Indiana
США /Hawaii
США /Индиан Старка
США /Мичиган
США /Pacific-New
США /Самоа

E.G .:

timedatectl set-timezone US/Eastern  

Другие обозначения часовых поясов можно найти здесь: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

ответил Redblur 29 MarpmWed, 29 Mar 2017 22:04:14 +03002017-03-29T22:04:14+03:0010 2017, 22:04:14
0

Вы не можете сделать это, если вы не выберите файл часового пояса, который вы хотите соответствовать каждому смещению часового пояса.

Некоторые ответы, предлагаемые с использованием файлов в /usr /share /zoneinfo /Etc, но проблема заключается в том, что они являются агностиками DST.

Поэтому, если вы не выбрали какую-либо конфигурацию часового пояса для соответствия каждому смещению, или вам не нравится DST, нет никакого способа сделать это в целом.

ответил Alex G 23 PM00000080000005231 2015, 20:52:52

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132