green_fr: (Default)
[personal profile] green_fr
После вопроса про миллиард секунд разговорился с коллегами. Полезли проверять, чему соответствует дата 0 в наших системах.

Про Excel я помнил, что там это 00/01/1900, но при этом мне почему-то в голову не приходило проверить, чему соответствует дата −1. Оказалось, ничему — в Excel невозможно поставить дату до начала 1900 года.
(если я правильно помню, Excel под Mac долгое время ставил нулевую дату на 00/01/1904, поэтому в современных версиях Excel есь возможность выбора базы для дат — я на эти грабли уже наступал, прелесть)

В Matlab нулевая дата тоже приходится на нулевое января, только и год там нулевой: 00/01/0000. Зато — прогресс! — он понимает отрицательные числа. И дата −1 попадает на 30 декабря 9999 года. Почему 30 декабря, понятно — чтобы через 2 дня было 1 января, а что там между ними — 31 декабря или 0 января, — это уже детали. И почему 9999 года тоже, наверное, понятно — в какой-нибудь первой версии MatLab вывод даты был предусмотрен только в рамках 4 цифр: проблему 2000 года решили, а даты до нашей эры никого никогда не будут интересовать.

Date: 2018-05-31 11:16 am (UTC)
From: [identity profile] p_govorun.livejournal.com
У Excel нулевая дата действительно 00/01/1900, но при этом 1900й год условно полагается високосным.

Date: 2018-05-31 11:51 am (UTC)
From: [identity profile] xxxxx.livejournal.com
угадай как выглядит имплементация метода int Date::dayOfWeek() в Qt? Подсказка: это очень легко если знать, что легко угадать

При этом например функция dayOfMonth в том же классе офигенно сложная (это вторая подсказка в общем-то)
Edited Date: 2018-05-31 11:52 am (UTC)

Date: 2018-05-31 01:34 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Надо полагать, формат даты завязан на дне недели? (я при этом даже не знаю, что такое Qt)

Date: 2018-05-31 01:36 pm (UTC)
From: [identity profile] xxxxx.livejournal.com
Э.... Нет, не завязан, но вычисляется с лёгкостью. А неважно кто такой кьют, просто некая библиотека на неком языке программирования

Date: 2018-05-31 01:42 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Ну? Колись :-)

Date: 2018-05-31 01:45 pm (UTC)
From: [identity profile] xxxxx.livejournal.com
блин, ну я столько накидал подсказок...

короче структура "дата" содержит единственное целое число, ну скажем Х, а фунция день_недели вычисляет Х mod 7

А вот вычислить по номеру дня от сотворения мира евонный месяц-год-день это таки очень нетривиально

Date: 2018-05-31 01:50 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Логично. В MatLab то же самое, кстати.

Date: 2018-06-02 06:35 am (UTC)
From: [identity profile] gianthare.livejournal.com

Я смотрел как-то видео про все грабли с временем - часовые пояса, летнее время, декретное время, переход с юлианского на грегорианский календарь, в..ременная .отмена летнего времени, разное время на западном берегу в автономии и в еврейских поселениях. Закачивалось все leap second которую одни повторяют дважды, а другие размазывают на целый день

Date: 2018-06-02 06:57 am (UTC)
From: [identity profile] xxxxx.livejournal.com
Это всё очень простые вещи, надо просто посидеть пол-часика и разобраться, кино смотреть это наверное самый неэфективный метод, скорее всего всё в википедии разжёвано подробно... А сэтими вашими западноберегами ржака была году эдак 2011, когда хамас разругался с арафатией, открутил часы и надо было дополнительно к Asia/Gaza придумать название для иудеи-самарии. В принципе тоже не биномнютона, но при слове «палестина» у людей часто крыша начинает сползать, но всё обошлось и кончилось благополучно

Date: 2018-06-02 08:26 am (UTC)
From: [identity profile] gianthare.livejournal.com
Видео это не чтобы разобраться, а чтобы поржать - ближе к концу совершенно офигеваешь - типа, что ещё там может быть.
Концептуально все и без Википедии понятно, а на практике это чудовищное количество условий - даже если оставаться в рамках 20-го века, нужно знать кто, где, когда и на сколько времени вводил летнее время, менял часовые пояса (какой-то остров недавно переехал поближе к Австралии, а Израиле кроме последних пяти лет, каждый год заново голосовали, когда именно будет летнее время). Leap second и сейчас вводится голосованием раз в несколько лет.

Date: 2018-06-02 09:08 am (UTC)
From: [identity profile] xxxxx.livejournal.com
В британии есть островок, где употребляют юлианский календарь 19 века (т.е. с отступом 12 вместо 13 дней), к сожалению tzdata этот жизнеутверждающий факт не отражает, видимо там не пользуются компьютерами, хотя вроде есть даже несколько дюжин населения.

Date: 2018-06-02 06:27 am (UTC)
From: [identity profile] gianthare.livejournal.com

Что-то типа Seconds / 86400 % 7

Date: 2018-06-02 06:59 am (UTC)
From: [identity profile] xxxxx.livejournal.com
Это имнно «дата», там никаких секунд, так что ещё проще

Date: 2018-05-31 12:05 pm (UTC)
From: [identity profile] yuriyag.livejournal.com
А мне нравится что "время эпохи" считается с 1970 года )). Жалко только что с первого января.
https://www.unixtimestamp.com/

Date: 2018-05-31 01:37 pm (UTC)
From: [identity profile] xxxxx.livejournal.com
Это смотря у кого, у тех кто выдумал Юникс оно таки с 1969 года начинается

Date: 2018-05-31 01:39 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Ты 1970-го года рождения, что ли?

Date: 2018-05-31 01:52 pm (UTC)
From: [identity profile] yuriyag.livejournal.com
ага )

Date: 2018-06-01 02:34 pm (UTC)
From: [identity profile] grave--digger.livejournal.com
Ради интереса попробовал в SAP нулевую дату ввести. Не даёт, гадюка! :) Наличествует внутренний контроль для этого типа данных.

Profile

green_fr: (Default)
green_fr

March 2026

S M T W T F S
1234567
8 91011 121314
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 12th, 2026 08:15 pm
Powered by Dreamwidth Studios