dimhold.by
← Артыкулы

344 скачкі гадзінніка за гэты год, два з іх на цэлыя суткі

Калі мне патрэбна заўтра, я дадаю 24 гадзіны. Усе ведаюць, што гэта ломіцца двойчы на год, усе вымаўляюць слова “гадзінны пояс” на рэўю, а потым праўка з’язджае ў галіну разам з гэтымі 24 гадзінамі, бо лечыцца яно бібліятэкай, якую сёння ніхто не хоча цягнуць. Прыкладна так у мяне і выйшла ў сакавіку. Чаго я не рабіў ніводнага разу, дык гэта не глядзеў, што база кажа пра змест года.

Таму прачытаў яе цалкам. Кожную зону, якую ведае рантайм, зрушэнне на кожны дзень 2011 года, і кожная змена ўдакладнена да хвіліны двайковым пошукам унутры сутак. Атрымалася 418 зон, з іх рухаліся хоць раз 185, усяго 344 скачкі.

336 скачкоў з гэтых 344 гэта тая самая гадзіна, вакол якой уся спрэчка. Цікавыя астатнія 8.

памер скачка колькі хто 30 хв 2 востраў Лорд-Хау, туды і назад 60 хв 336 звычайныя 120 хв 3 Троль двойчы, Дэвіс адзін раз 180 хв 1 Кейсі, 27 кастрычніка 1440 хв 2 Апіа і Факаофа, 30 снежня прачытана 418 зон, рухаліся 185
Паласа на 60 хвілінах абрэзаная, каб улезці: там 336 супраць 2. Усё, пад што хтосьці калісьці пісаў дапаможную функцыю, ляжыць у гэтым адным радку. Астатнія 4 радкі гэта тое, на чым такая функцыя памыляецца.

Востраў Лорд-Хау рухаецца на паўгадзіны, і гэта адзіная такая зона ў базе. Антарктычныя станцыі рухаюцца на 2 гадзіны, Троль двойчы, Дэвіс адзін раз. Кейсі рухаецца на 3. Гэта 6 скачкоў, якіх набор тэстаў з адных гадзінных выпадкаў не ўбачыць ніколі.

Далей ідзе 30 снежня, якога яшчэ не было. Да яго 9 дзён.

Суткі, якіх не будзе

У 10 раніцы па UTC у гэты дзень Апіа сыходзіць з мінус 600 хвілін на плюс 840. Праз гадзіну тое ж робіць Факаофа. Абедзве пераступаюць лінію змены даты, таму мясцовы каляндар ідзе з чацвярга 29 снежня адразу на суботу 31 снежня. Для таго, хто стаіць там, пятніцы не здарыцца.

Любы расклад, які адлічвае суткі даданнем 86400000 мілісекунд, выдасць у гэтых зонах пятніцу. Любая справаздача з групоўкай па мясцовай даце атрымае пустую скрыню пасярэдзіне. Любая розніца двух момантаў, палічаная ў сутках, апынецца на 1 большай.

Праверыць гэта сёння мне няма чым. Нікому няма чым. Правіла ляжыць у базе з пастаўленай датай. Гэта і ёсць усё папярэджанне, якое хтосьці атрымае.

Вясной наперад, восенню назад, 26 выключэнняў

Лік, з-за якога я западозрыў уласны скрыпт: 186 скачкоў ідуць наперад і толькі 158 назад. Час належыць вяртаць да канца года, таму розніца ў 28 выглядала як памылка ў тым, як я абыходжу мяжу года.

Памылкі няма. 30 зон заканчваюць 2011 год на зрушэнні, іншым за тое, з якога пачалі.

зоны, у якіх зрушэнне 31 снежня не роўнае зрушэнню 1 студзеня 25 зон, +60 Расія і Беларусь: сышлі ў сакавіку, засталіся 1 зона, +60 Баія: летні час ідзе 2 зоны, +1440 Апіа, Факаофа 1 зона, +180 Кейсі 1 зона, -120 Дэвіс 186 скачкоў наперад супраць 158 назад: вось куды пайшлі 28
Сіметрыя, якую ўсе маюць на ўвазе, не з'яўляецца ўласцівасцю года. У 2011 яна парушана 30 разоў. 25 з іх гэта адно рашэнне, прынятае ў адной краіне ў сакавіку.

25 зон з 30 гэта Расія і Беларусь, якія сышлі на летні час у сакавіку і там засталіся. Мінск у гэтым спісе, і гэта якраз тая частка, якой я не ведаў, пакуль яе не надрукаваў скрыпт. Я ўвесь год глядзеў на гэты гадзіннік на сцяне. Дваццаць шостая зона з плюс 60 гэта Баія ў Бразіліі, у якой проста сярэдзіна лета, калі год заканчваецца.

Што кроду даводзіцца перажываць

186 скачкоў наперад азначаюць 186 адрэзкаў мясцовага часу, якіх у 2011 годзе не існуе. Спытай 02:30 не ў тую ноч не ў той зоне, і такога моманту няма. 158 скачкоў назад азначаюць 158 адрэзкаў, якія здараюцца двойчы, таму мясцовая адзнака часу без зрушэння двухсэнсоўная на гадзіну. На Лорд-Хау яна двухсэнсоўная на паўгадзіны.

І самі зрушэнні не тыя круглыя лікі, якія звычайна мае на ўвазе схема даных. За год база выкарыстоўвае 41 рознае зрушэнне ад UTC. З іх 15 не кратныя гадзіне: звыклыя паловы плюс 5.75, 8.75, 12.75 і 13.75.

Чаго я не правяраў

Ці кажа база, якую я чытаю сёння, праўду пра студзень. Даныя зон правяць заднім чыслом, таму файл, які апісвае 2011 год, гэта файл, які правілі цягам 2011 года. Мой абход не адрозніць правіла ад яго пазнейшай папраўкі. Яшчэ я прачытаў толькі тое, што пастаўляецца з рантаймам, то бок адну копію базы замест некалькіх, якія звычайна жывуць у сістэме. Значыць аперацыйная сістэма, мова і рухавік базы даных могуць адказваць кожны са сваёй даўніны. Гэта тое разыходжанне, на якое я ўжо натыкаўся, і тут яно не памеранае.

Вузкае сцвярджэнне гэта правіла пра тое, чаго не меркаваць. Суткі гэта не 24 гадзіны, зрушэнне гэта не цэлы лік гадзін, гадзіннік не вяртаецца да канца года. А праз 9 дзён пятніца прападзе ў дзвюх зон, у якіх ёсць усе падставы разлічваць на пятніцу.