Я сделал 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