powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
18 сообщений из 18, страница 1 из 1
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35617055
gbcfk(f)^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую

Нужно посчитать точное кол-во дней, прошедшее с 01 Января 1960 года.
Собственно, как лучше учитывать високосные годы? Да и с месяцами как-то не очень понятно, неужели для каждого месяца учитывать свое кол-во дней..
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35617061
untitled
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в эпичном треде про с++ решали такую задачу на всяких разных языках в качестве демонстрации их кошерности, можно там посмотреть)
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35617066
gbcfk(f)^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок, а "эпичный тред про С++" это где?
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35617068
untitled
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35617303
gbcfk(f)^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чего-то я так увлекся забавным срачем на первых страницах того топика, что не нашел в себе сил искать дальше :)
Да и без этого написал скрипт, все считает.. вот только одно но.
Имеется расхождение в несколько дней у моего результата и данными, которые я выдергиваю из AD vbs скриптом..
Кто-нибудь может независимо посчитать сколько дней прошло от 01/01/1601 до 01/01/2008?
У меня вышло 148657дней, контроллер домена упорно считает, что 148652
Кто прав? :)
В принципе, для моей задачи 5 дней туда-сюда не критичны, но все-таки где ошибка?
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35617514
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gbcfk(f)^сколько дней прошло от 01/01/1601 до 01/01/2008?
У меня вышло 148657дней, контроллер домена упорно считает, что 148652


За это время вообще-то сменился стиль календаря, причем в разных странах это происходило по-разному. В России, например, в 1918 году вообще 14 дней по...(теря)ли для революционной целесообразности. Контроллер домена в курсе, что такое революционная целесообразность?

Короче, ищите старожилов :-)
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35617787
gbcfk(f)^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cane Cat FisherЗа это время вообще-то сменился стиль календаря, причем в разных странах это происходило по-разному. В России, например, в 1918 году вообще 14 дней по...(теря)ли для революционной целесообразности. Контроллер домена в курсе, что такое революционная целесообразность?

Короче, ищите старожилов :-)
(..лекторским голосом..)
Между прочим, эта дата (1 Января 1601 года... понедельник) является международным стандартом в некоторых областях, этакой точкой отсчета - началом начал (и вот не надо меня спрашивать, нафига так сделали)
Например, многие даты в AD считаются как число 100наносекундных интервалов, прошедших с 01/01/1601 до настоящего момента
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35617802
Фотография Frenzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо юзать библиотечные функции. потому что задача сама по себе не простая. если почему-то надо изобрести велосипед, читаем умную книжку, например "Calendrical Calculations" (Dershowitz, Reingold)

_______________________________________
2pro4U
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35617827
gbcfk(f)^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Frenzy
Да я понимаю, что изобрел велосипед...
Да и какие в данном случае библиотечные функции можно использовать в vbs?
Просто прошу, кому не сложно, проверить полученное число дней :)
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35617957
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gbcfk(f)^Просто прошу, кому не сложно, проверить полученное число дней :)
postgresql:
Код: plaintext
1.
2.
3.
4.
5.
seb=> select '01.01.2008'::date - '01.01.1601'::date;
 ?column?
----------
    148653 
( 1  запись)
mysql:
Код: plaintext
1.
2.
3.
4.
5.
6.
mysql> select datediff(cast('2008-01-01' as date), cast('1601-01-01' as date));
+------------------------------------------------------------------+
| datediff(cast('2008-01-01' as date), cast('1601-01-01' as date)) |
+------------------------------------------------------------------+
|                                                            148653  |
+------------------------------------------------------------------+
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35618011
Tamozhnya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oracle 9ir2
Select to_date('01.01.2008', 'dd.mm.yyyy') - to_date('01.01.1601', 'dd.mm.yyyy') from dual
148653

VFP8.0
?{^2008-01-01}-{^1601-01-01}
148653
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35618123
gbcfk(f)^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёш
Tamozhnya
Вы сговорились?
Шучу :)
Значит 148653.. То, что я где-то ошибся это вполне возможно..
Странно, что с AD на 1 день разница вышла.. будем думать

Спасибо за отклик
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35618857
Rivmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В AD скорее всего считают по формуле наподобие
365N + Floor(N/4) + L,
где N количество полных лет, а L - количество дней неполного года.
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35620251
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
DateTime.Now.Subtract(new DateTime( 1960 ,  1 ,  1 )).Days
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35624420
gbcfk(f)^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё это конечно замечательно... НО
Теорема (о кол-ве дней):
С 01.01.1601 по 31.12.2007 включительно прошло РОВНО 148656 дней. Это доказывает скрупулезное вычисление карандашиком на бумажке
ДОКАЗАТЕЛЬСТВО :
1) полных лет прошло: 2007-1601+1=407
2) из них високосных было 101 штука
3) значит невисокосных было 306 штук
Итого: кол-во дней = 306*365 + 101*366 = 148656

Ну никак 148653 не выходит
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35624630
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gbcfk(f)^
2) из них високосных было 101 штука
если вы считаете чисто математически, високосных было 98:
авторИными словами, год является високосным, если он кратен 4 и при этом не кратен 100, либо кратен 400.
Код: plaintext
1.
2.
seb@seb:~$ perl -e '$c = 0; for (1601..2007){ $c += 1 if ($_ % 4 == 0 && $_ % 100 != 0) || ($_ % 400 == 0); }; print "$c\n";'
 98 
но это всё равно не точно. посмотрите внимательно комментарий Cane Cat Fisher .

авторДаты перехода стран на григорианский календарь 1582 — Италия, Испания, Португалия, Польша, Франция, Лотарингия, Голландия, Люксембург, Великое княжество Литовское. 1583 — Австрия (часть), Бавария, Тироль. 1584 — Австрия (часть), Швейцария, Силезия, Вестфалия. 1587 — Венгрия. 1610 — Пруссия. 1700 — протестантские немецкие государства, Дания (включая Норвегию). 1752 — Великобритания и колонии. 1753 — Швеция (включая Финляндию). 1873 — Япония. 1911 — Китай. 1912 — Албания. 1916 — Болгария. 1918 — Советская Россия. 1919 — Сербия, Румыния. 1924 — Греция. 1927 — Турция. 1928 — Египет. Вы для какой страны считаете ? :)

автор1610 — Пруссия. 1700 — протестантские немецкие государства, Дания (включая Норвегию). 1752 — Великобритания и колонии. 1753 — Швеция (включая Финляндию). 1873 — Япония. 1911 — Китай. 1912 — Албания. 1916 — Болгария. 1918 — Советская Россия. 1919 — Сербия, Румыния. 1924 — Греция. 1927 — Турция. 1928 — Египет.в этих странах переход на григорианский календарь попадает в Ваш промежуток и по хорошему как минимум для них нужно вычитать ещё эндцать дней, так как их реально небыло, календарь был сдвинут на эндцать дней вперёд :)

ps: но БД как ни странно кладут на реальное количество дней и такую коррекцию не делают %)
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35624756
gbcfk(f)^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В данном случае, АД считает високосными годаме все года начиная с 1600 кратные четырем. И их было с 1601-го ровно 101.
Ну и, само собой, никакие смены календарей не учитываются :)
...
Рейтинг: 0 / 0
Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
    #35624784
gbcfk(f)^
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стоп! А ведь действительно, если года, кратные 4 и 100, но не кратные 400 не являются високосными, то итоговое кол-во дней по моим подсчетам = 148653
Итого имеем расхождение с АД на 1 день
Ёш
Благодарю, кто бы мог подумать, что 1700, 1800 и 1900 года не високосные
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Подскажите с алгоритмом: посчитать кол-во дней с определенной датой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]