Показать сообщение отдельно
Старый 14.08.2019, 14:12   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 085
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Почему GetDays "спешит" на 15 дней?

Цитата:
Сообщение от SergVK Посмотреть сообщение
Добрый день коллеги.

Столкнулся с необходимостью хранить дату и вычислять разницу с текущей, логично преобразовать ее в количество дней и хранить как одно число long.
И вот тут возникла загвоздка.

По описанию функции GetDays выдает количество дней прошедших с 01.01.0001.

Есть общепринятый алгоритм расчета дня по Юлианскому и Григорианскому календарю, например такой
wiki

Если считать по нему 01.01.0001 это 1721426 й день
Например сегодня 14.08.2019 это 2458710 й день
Разница 737284 дней.
GetDays выдает 737300. Ошибка 15 дней?

Понятно, что можно эту ошибку учесть и не париться, но хотелось бы понять, откуда она берется, где и когда ждать подвоха.
Блок передаёт то, что ему отвечает стандартная функция из библиотеки C++.

Думаю, если бы в этой функции была ошибка, то за несколько десятков лет это хоть кто-то, но заметил.

Другими словами, я не проверяя ваши расчёты считаю, что скорее всего вы в чём-то ошиблись или что-то не учли. Високосные года, например.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием