Назад | Перейти на главную страницу

Вопрос о дате и часовом поясе в Linux

Я сделал date команда, и она дала следующий вывод

root@localhost:~$ date
Thu Dec 30 14:19:47 UTC 2010

Затем я изменил дату, используя date -s команда whichn дала следующий вывод

root@localhost:~$ date -s "12/30/2010 JST 14:19:47"
Thu Dec 30 05:19:47 UTC 2010

Я заметил, что время изменилось на 9 часов позже времени UTC, чтобы показать точное время JST. Но часовой пояс, как вы можете видеть, по-прежнему показывает UTC. Почему отображается правильное время и неправильный часовой пояс?

Спасибо

Это потому, что ваша система настроена на использование UTC (или не имеет установленного часового пояса), а не JST. Команда date принимает JST в качестве модификатора ввода, но затем использует системное значение по умолчанию для его отображения. Если вы хотите, чтобы ваша система отображала время в формате JST, вам следует установить часовой пояс в JST.

удалить или переименовать /etc/localtime а затем свяжите соответствующий файл в /usr/share/zoneinfo к /etc/localtime

cd /etc
mv localtime localtime.orig
ln -s /usr/share/zoneinfo/Japan /etc/localtime

редактировать

Чтобы ответить на ваш комментарий - команда date должна понимать информацию о часовом поясе, предоставленную как часть date string параметр -s и что с этим делать. Если вы изучите исходный код вы обнаружите, что все общие сокращения часовых поясов и их смещения от GMT определены. Эта информация затем используется для правильной установки времени. В зависимости от версии core-utils, которую вы исследуете, вы найдете информацию в lib / parse-datetime.c или lib / getdate.c.

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

export TZ=JST