Настройка часового пояса в Linux

Я устанавливаю часовой пояс на GMT + 6 на своей машине Linux, копируя файл zoneinfo в /etc/localtime , но команда date все еще показывает время как UTCtime-6 . Может ли кто-нибудь объяснить мне такое поведение?

Я предполагаю, что команда date должна отображать время UTCtime+6 раз. Вот шаги, которые я выполняю:

 date Wed Jan 22 17:29:01 IST 2014 date -u Wed Jan 22 11:59:01 UTC 2014 cp /usr/share/zoneinfo/Etc/GMT+6 /etc/localtime date Wed Jan 22 05:59:21 GMT+6 2014 date -u Wed Jan 22 11:59:01 UTC 2014 

Взгляните на это сообщение в блоге: How To: 2 метода изменения TimeZone в Linux .

Распродажа Red Hat

Если вы используете такой дистрибутив, как Red Hat, то ваш подход к копированию файла будет в основном приемлемым.

 $ ls /usr/share/zoneinfo/ Africa/ CET Etc/ Hongkong Kwajalein Pacific/ ROK zone.tab America/ Chile/ Europe/ HST Libya Poland Singapore Zulu Antarctica/ CST6CDT GB Iceland MET Portugal Turkey Arctic/ Cuba GB-Eire Indian/ Mexico/ posix/ UCT Asia/ EET GMT Iran MST posixrules Universal Atlantic/ Egypt GMT0 iso3166.tab MST7MDT PRC US/ Australia/ Eire GMT-0 Israel Navajo PST8PDT UTC Brazil/ EST GMT+0 Jamaica NZ right/ WET Canada/ EST5EDT Greenwich Japan NZ-CHAT ROC W-SU 

Я бы рекомендовал ссылаться на него, а не на копирование.

 $ sudo unlink /etc/localtime $ sudo ln -s /usr/share/zoneinfo/Etc/GMT+6 /etc/localtime 

Теперь дата показывает разный часовой пояс:

 $ date -u Thu Jan 23 05:40:31 UTC 2014 $ date Wed Jan 22 23:40:38 GMT+6 2014 

Ubuntu / Debian Distros

Чтобы изменить часовой пояс на любом из этих дистрибутивов, вы можете использовать эту команду:

 $ sudo dpkg-reconfigure tzdata 

ss # 1

 $ sudo dpkg-reconfigure tzdata Current default time zone: 'Etc/GMT-6' Local time is now: Thu Jan 23 11:52:16 GMT-6 2014. Universal Time is now: Thu Jan 23 05:52:16 UTC 2014. 

Теперь, когда мы проверяем это:

 $ date -u Thu Jan 23 05:53:32 UTC 2014 $ date Thu Jan 23 11:53:33 GMT-6 2014 

ПРИМЕЧАНИЕ. Эта опция также предусмотрена в Ubuntu 14.04 и выше с помощью одной команды (источник: Ask Ubuntu – установка часового пояса из терминала ):

 $ sudo timedatectl set-timezone Etc/GMT-6 

Об использовании «Etc / GMT + 6»

выдержка из ответа @ MattJohnson на SO

Зоны, такие как Etc/GMT+6 , намеренно меняются на обратную сторону для обратной совместимости с стандартами POSIX. См. Комментарии в этом файле .

Вы почти никогда не должны использовать эти зоны. Вместо этого вы должны использовать полностью названный часовой пояс, такой как America/New_York или Europe/London или что-то подходящее для вашего местоположения. См. Список здесь .

Вот как я это делаю в Ubuntu. Просто замените Asia/Tokyo своим часовым поясом.

echo 'Asia/Tokyo' | sudo tee /etc/timezone

sudo dpkg-reconfigure -f noninteractive tzdata

В tzdata есть ошибка : некоторые значения нормализуются с помощью dpkg-reconfigure :

 echo 'US/Central' >/etc/timezone dpkg-reconfigure -f noninteractive tzdata # Current default time zone: 'America/Chicago' echo 'US/Eastern' >/etc/timezone apt-get install --reinstall tzdata # Current default time zone: 'America/New_York' 

Команда tzselect предназначена для того, чтобы делать то, что вы хотите