Як змінити параметри часового поясу з командного рядка


221

У мене є віртуальна машина, встановлена PST, яку мають кілька колег у різних часових поясах.

Якщо я хотів змінити часовий пояс на EST та GMT , що мені потрібно зробити?

Відповіді:


288

Використовуйте timedatectl

sudo timedatectl set-timezone <timeszone>

Приклади:

  • Часовий пояс як EST

    sudo timedatectl set-timezone EST
    
  • Часовий пояс як UTC

    sudo timedatectl set-timezone UTC
    
  • Перелік усіх дійсних часових поясів

    timedatectl list-timezones
    

Ця команда ідеально підходить для сценаріїв автоматизації, оскільки не потребує взаємодії з користувачем , порівняно з іншою відповіддю на основі dpkg-reconfigure tzdata.


1
Я не прихильник +1 коментарів, але я розміщую тут, оскільки це працювало для мене найкращим чином. Я хотів, щоб єдиний однорядковий інструмент командного рядка змінив часовий пояс, а не хотів запустити якесь ціле меню або програму gui (я не знаю, що tzdataробить, як це працює, але мені не потрібно з цим одна командна лінія). Дякую!
Філ Райан

працює як шарм;)
user332660

Цікаво, що він робить щось трохи інше, ніж tzdata. У мене виникла проблема з тим, що час Java відрізнявся від системного часу після застосування патчу. Tzdata не працював над вирішенням проблеми, але це зробило.
Даніель Бауер

1
це не спрацювало для мене; однак dpkg-reconfigureзробив трюк.
Антті Хаапала

14.04.4 сервер ubuntu
Antti Haapala

40

Як root ви повинні виконати:

dpkg-reconfigure tzdata

Слід запустити інструмент на основі меню, який дозволяє змінити часовий пояс.


32

Далі також працює. Для GMT:

ln -sf /usr/share/zoneinfo/GMT /etc/localtime

Для EST:

ln -sf /usr/share/zoneinfo/EST /etc/localtime

8
Я думаю, що було б краще пов’язати один із файлів міста, а не GMT ​​або EST, оскільки тоді вони будуть відслідковувати літній час, тоді як зв’язування (наприклад) GMT не змінить системний час, щоб відображати, коли діє економія літнього часу. у вашому місті. наприклад:ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime
Асфанд Казі

це найкраще
Hasan Tıngır

16

Найпростіший спосіб, особливо до сервера, - це перелік часових поясів:

timedatectl list-timezones

І вибирайте своє, наприклад:

timedatectl set-timezone Europe/Athens

Це воно! , :-)


6

Щоб запустити одну програму з іншим налаштуванням часового поясу, встановіть TZзмінну середовища, наприклад, запустіть, TZ=Pacific/Kiritimati dateщоб побачити час, який знаходиться на острові Різдва, або export TZ=Pacific/Kiritimatiщоб цей параметр був останнім для сеансу оболонки.


6

Відредагуйте timezoneфайл у /etcпапці як:

Etc/GMT

Ви можете використовувати наступний формат:

Region "/" City 

Приклад /etc/timezone:

Europe/Athens

або

Europe/Paris
Europe/London

Ви можете експериментувати з: dpkg-reconfigure tzdata і перевірити файл часового поясу.

Ви повинні перезавантажити або запустити знову послугу (не послугу ntp). Я не знаю, який. Якщо хтось знає, будь ласка, поділіться з нами. (Випробувано на Ubuntu 15.10, зміна враховується миттєво)


4
cp -p /usr/share/zoneinfo/US/Pacific /etc/localtime

Я рекомендую ПРОТИ пов'язувати, як згадували інші. Якщо якийсь сценарій випадково /etc/localtimeперезаписав ваш файл, він перезаписав ваш файл часового поясу в Тихому океані ... і замінити його трохи боляче.

Просто скопіюйте тихоокеанський файл у файл локального часу командою, наведеною вище.


Це насправді працювало для мене. Я думаю, що є якась помилка з Docker, ansible (?). Як timedatectl, так і dpkg-переналаштування tzdata не вдалося мені. Після того як я скопіював, часовий пояс змінився з EST на PDT.
Нд

2

Я використовую наступний скрипт, щоб запитати користувача, який часовий пояс встановити, а потім підтвердити, що він дійсно встановлений:

#!/bin/sh
sudo timedatectl set-timezone $(tzselect)
echo
echo timedatectl says:
timedatectl

Я це називаю tz-set.


0

Як root ви повинні виконати:

ln -fs /usr/share/zoneinfo/Europe/Warsaw /etc/localtime && dpkg-reconfigure --frontend noninteractive tzdata


Поясніть, принаймні, як ця команда працює для зміни часового поясу.
Парто

0

Це працювало для мене на GCP Ubuntu 14 через SSH

  1. sudo su
  2. cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
  3. Перезавантажте сервер
  4. Зроблено
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.