Включить / отключить переход на летнее время через командную строку в Ubuntu 18.04 - PullRequest
1 голос
/ 10 июля 2019

Примечание. Под «Отключить» летнее время я подразумеваю, чтобы системные часы игнорировали любые изменения времени для летнего времени (т. Е. Если летнее время отключено, то часы не будут «прыгать вперед» на час в марте и не будет «отступать» час в ноябре.

Я разрабатываю приложение Qt для запуска в Ubuntu 18.04, и мне нужно иметь возможность установить системный часовой пояс, время и дату.

Для настройки времени и даты я легко могу использовать timedatctl для изменения настроек системы. Однако эта команда, похоже, может отключить переход на летнее время. Он сообщает, является ли летнее время активным или нет, в зависимости от часового пояса и даты, но вы не можете отключить / включить эти настройки.

В Windows я использовал tzutil.exe , чтобы установить включение DST или не использовать флаг dst_off. Есть ли какой-нибудь эквивалент Ubuntu?

1 Ответ

2 голосов
/ 10 июля 2019

Я отвечу на этот вопрос с точки зрения часового пояса.

Отключение DST, как правило, не очень хорошая вещь.Такие функции игнорируют реальность часовых поясов.Часовые пояса определяются отдельными правительствами по всему миру, и те же правительства определяют, где и когда действует летнее время.

Например, я нахожусь в Редмонде, штат Вашингтон, США.По законодательству США он расположен в тихоокеанском часовом поясе, который является UTC-8 в стандартное время и UTC-7 в дневное время.Закон США в настоящее время позволяет штатам отказаться от DST, что сделали Аризона и Гавайи.Но Вашингтон не имеет, и поэтому DST применим для меня здесь.Прямо сейчас (в июле) сейчас 11:00 по тихоокеанскому времени.Я не могу просто решить для себя, что его 10:00 по тихоокеанскому времени.Для этого мне пришлось бы переместиться в другой часовой пояс.

Часовые пояса в базе данных часовых поясов IANA (TZDB, Olson и т. Д.), Которые используются в большинстве систем,включая Ubuntu, определите отдельные области по всему миру, где местное время согласовывалось, по крайней мере, с 1970 года. Если есть области, которые имеют одинаковое стандартное время, но различаются ли они летним или нет, или , когда применяется летнее время,затем они получают свою собственную отдельную запись в TZDB.Другими словами, нет смысла говорить «я хочу быть в America/Los_Angeles без летнего времени», потому что нет места в тихоокеанском часовом поясе, который бы это делал.Если вы находитесь на островах Питкэрн (UTC-8 без DST), то вы просто используете Pacific/Pitcairn.

Может быть, более ясный пример: большая часть времени США в горах использует MST (UTC-7) и MDT (UTC-6), который получает идентификатор TZDB America/Denver.Аризона, большинство из которых не использует летнее время, использует MST (UTC-7) в течение всего года, поэтому в TZDB она получает собственный идентификатор America/Phoenix.

Тогда вы можете спросить, почемуВ Windows есть функция «Отключить DST»?Есть несколько причин, по которым я могу говорить публично (раскрытие: я работаю в Microsoft, иногда в этой области).

  • Функция часового пояса Windows изначально была создана с Windows NT.В то время база данных Олсона существовала, но не была такой вездесущей, как сегодня.Microsoft решила создать собственную реализацию, и по сей день существует два разных источника данных о часовых поясах.TZDB и Microsoft.

  • Раньше считалось, что данные часового пояса Windows не охватывают весь мир.Таким образом, некоторым пользователям Windows приходилось полагаться на эту функцию, чтобы получить точное время.Это резко изменилось с обновлением в июне 2016 года , чтобы соответствовать заявлению Microsoft о миссии "... каждый человек и каждая организация на планете ...".Сегодня существует обязательство и политика по обеспечению точных данных о часовом поясе.

  • Когда правительство решает внести изменения в свой часовой пояс (принятие DST, приостановка DST,изменение даты или времени перехода на летнее время, изменение стандартного смещения времени и т. д.), иногда законодатели совершают критическую ошибку, не предоставляя достаточно времени для выполнения заказа ( см. мой пост на эту тему ).Когда это происходит, Microsoft может предложить временные рекомендации о том, как получить точное местное время, пока не будет предоставлено обновление.Такое руководство может включать отключение DST или переключение на другой часовой пояс.Эти рекомендации являются всегда временными, поэтому становится спорным, должна ли эта функция вообще существовать.

Как правило, большинство пользователей Windows никогда не должны отключать DST.Если они нуждаются в этом, чтобы получить точное местное время (за исключением редкого случая, описанного выше), они, вероятно, просто не устанавливают в своем часовом поясе правильную запись в первую очередь.

Время TZDBзоны в Ubuntu и других ОС, как правило, имеют более короткие циклы обновления, чем Windows, и, следовательно, не подвергаются такому быстрому изменению в короткие сроки.

...