LinuxForum.Fans
Тема

часовые пояса: смещение по отношению к UTC

Автор: DoggoD 17 сообщений 2935 просмотров
25.10.2014 10:48 · отредактировано #398166

приветствую..
есть необходимость задать на сервере часовой пояс для региона, географически располагающегося в поясе GMT+11 (дальневосточный регион). когда задаю пояс GMT+11, то мне совершенно не ясно, отчего время UTC вдруг скачет вперед:
[console]user@dd:~$ date
Сбт Окт 25 17:30:26 GMT+11 2014
user@dd:~$ date -u
Вск Окт 26 04:30:29 UTC 2014[/console]
при выставлении часового пояса GMT-11 получаем картину по дате и времени, соответствующую реальности
[console]user@dd:~$ date
Сбт Окт 25 17:37:26 GMT-11 2014
user@dd:~$ date -u
Сбт Окт 25 06:37:29 UTC 2014 [/console]
Не могли бы вы мне объяснить такое поведение на *nix машинах (было опробовано на debian 6 и solaris 10)?
p.s.: хардверные часы выставлены по локальному времени командой hwclock -w

25.10.2014 11:27 #398167

Поставь аппаратные часы на UTC и программно меняй лишь смещение (часовой пояс).
Ещё неизвестно как ты меняешь.

25.10.2014 11:42 #398171

Из мануала Вайршарк:

Показать
Базовым временем часового пояса является UTC (всемирное координированное время) или Время Зулу (военные и авиация). Старый термин GMT (время по Гринвичу) не должен использоваться, поскольку он немного неправилен (разница по Гринвичу до 0,9 секунд). Базовое время UTC равно 0 (основано в Гринвиче, Англия) и все часовые пояса уже смещаются от UTC от -12 до +14 часов! Дополнительную информацию можно найти:[url] http://en.wikipedia.org/wiki/Time_zone[/url] и http://en.wikipedia.org/wiki/Coordinated_Universal_Time.

25.10.2014 13:03 #398177
Vascom написал:
Поставь аппаратные часы на UTC и программно меняй лишь смещение (часовой пояс).
Ещё неизвестно как ты меняешь.

возьмем солярис для примера:
[console]
#cat /etc/TIMEZONE |grep TZ
TZ=Etc/GMT+11
#rtc -z GMT
#reboot
...
#echo $TZ
Etc/GMT+11
#date
Sat Oct 25 19:38:52 Etc/GMT 2014
#date -u
Sun Oct 26 06:38:54 Etc/GMT 2014
[/console]

[console]
#cat /etc/TIMEZONE |grep TZ
TZ=Etc/GMT-11
#rtc -z GMT
#reboot
...
#echo $TZ
Etc/GMT-11
#date
Sat Oct 25 19:55:27 Etc/GMT 2014
#date -u
Sat Oct 25 08:55:30 Etc/GMT 2014
[/console]
как видим hardware clock выставлены в GMT, непонятное поведение воспроизводится..
Oleg65, ненормальность в том, что географически зона находится GMT+11, но верное всемирное координированное время система отображает только при выставлении в системе часового пояса GMT-11

25.10.2014 13:25 #398178

А что говорит ls -l /etc/localtime?
Только давай в линуксе, солярис уж слишком специфичен может быть.

25.10.2014 14:58 #398183
"DoggoD" написал:
когда задаю пояс GMT+11, то мне совершенно не ясно, отчего время UTC вдруг скачет вперед

ошибка здесь:

"DoggoD" написал:
p.s.: хардверные часы выставлены по локальному времени командой hwclock -w

железные часы надо выставлять по UTC+0
далее каждый пользователь ставит свою timezone

Установка железных часов по localtime требуется для диалбута с Windows(она иначе не умеет).

25.10.2014 15:01 #398184

ЗЫЖ

-u, --utc

--localtime
Indicates that the Hardware Clock is kept in Coordinated Universal Time or local time, respec‐
tively. It is your choice whether to keep your clock in UTC or local time, but nothing in the
clock tells which you've chosen. So this option is how you give that information to hwclock.

If you specify the wrong one of these options (or specify neither and take a wrong default), both
setting and querying of the Hardware Clock will be messed up.

If you specify neither --utc nor --localtime, the default is whichever was specified the last time
hwclock was used to set the clock (i.e. hwclock was successfully run with the --set, --systohc, or
--adjust options), as recorded in the adjtime file. If the adjtime file doesn't exist, the default
is UTC time.


25.10.2014 16:53 #398217

DoggoD, подтверждаю, таймзоны Etc/GMT±* идут в обратном порядке... почему так инфы не нашёл и ни каких разумных объяснений придумать не смог... можно будет попробовать связаться непосредственно с мейнтейнерами timezone-data... если там кто-то из них ещё жив, то могут что-то объяснить..

А пока или пользоваться как-есть, или использовать географические зоны Asia/Vladivostok или Asia/Sahalin.

25.10.2014 17:12 #398222

"Fat-Zer" написал:
таймзоны Etc/GMT±* идут в обратном порядке... 
разве это не потому, что у вас время по localtime, и для получения правильного localtime вам нужно сделать обратную TZ? ИМХО вы просто поставили часы по localtime, при этом не указав --localtime для команды hwclock --hwtosys. Вот оно у вас так криво и работает.
25.10.2014 17:23 · отредактировано #398227
"drBatty" написал:
разве это не потому, что у вас время по localtime, и для получения правильного localtime вам нужно сделать обратную TZ?

[console]alexander@goblin /tmp $ TZ=Europe/Moscow date
Сб окт 25 17:19:08 MSK 2014
alexander@goblin /tmp $ TZ=Etc/GMT+4 date
Сб окт 25 09:19:17 GMT+4 2014[/console]
и оно разное не зависимо от локальных часов...

27.10.2014 03:39 #398480
Fat-Zer написал:
DoggoD, подтверждаю, таймзоны Etc/GMT±* идут в обратном порядке... почему так инфы не нашёл и ни каких разумных объяснений придумать не смог... можно будет попробовать связаться непосредственно с мейнтейнерами timezone-data... если там кто-то из них ещё жив, то могут что-то объяснить..
А пока или пользоваться как-есть, или использовать географические зоны Asia/Vladivostok или Asia/Sahalin.

Fat-Zer ясно, пока юзаю как есть.. пытаюсь избегать Asia/Vladivostok или Asia/Sahalin в связи с тем, что не всегда они соответствуют "закону"..
всем спасибо

27.10.2014 06:41 #398484

Какому закону?
Использование свежего tzdata всегда соответствует текущей обстановке во всех странах.

27.10.2014 06:54 · отредактировано #398485
Vascom написал:
Какому закону?
Использование свежего tzdata всегда соответствует текущей обстановке во всех странах.

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

27.10.2014 09:14 #398502

Ну про закон всё-таки вы согласны, что tzdata всегда ему соответствует?

27.10.2014 09:30 #398505
"DoggoD" написал:
пытаюсь избегать Asia/Vladivostok или Asia/Sahalin в связи с тем, что не всегда они соответствуют "закону"..

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

по поводу объяснений, оказалось всё распространяется вместе с пакетом: https://www.ietf.org/timezones/data/etcetera
в нескольких словах: «Тут так принято»

27.10.2014 11:10 #398531
Vascom написал:
Ну про закон всё-таки вы согласны, что tzdata всегда ему соответствует?

Vascom, согласен, при условии, что tzdata up2date ))

Fat-Zer написал:
[quote="DoggoD"]пытаюсь избегать Asia/Vladivostok или Asia/Sahalin в связи с тем, что не всегда они соответствуют "закону"..

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

по поводу объяснений, оказалось всё распространяется вместе с пакетом: https://www.ietf.org/timezones/data/etcetera
в нескольких словах: «Тут так принято»[/quote]

при условии обновления -- да, но не всегда реально его (обновление) доставить.. за ссылку спасибо -- впринципе там в полной мере говорят, что

# We use POSIX-style signs in the Zone names and the output abbreviations,
# even though this is the opposite of what many people expect.
# POSIX has positive signs west of Greenwich, but many people expect
# positive signs east of Greenwich. For example, TZ='Etc/GMT+4' uses
# the abbreviation "GMT+4" and corresponds to 4 hours behind UT
# (i.e. west of Greenwich) even though many people would expect it to
# mean 4 hours ahead of UT (i.e. east of Greenwich).
18.12.2014 14:21 #405723

"DoggoD" написал:
в моих руках, как администратора, есть инструмент, при помощи которого я могу управлять системой
вы, как администратор, должны поставить Единое Время, aka UTC. https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F

пользователи будут ставить своё, условное "местное время".

"Fat-Zer" написал:
в нескольких словах: «Тут так принято»
да. "Местное время" везде условное. Как решат. На Руси совмин решал, теперь дума.
Войдите или зарегистрируйтесь, чтобы ответить.