Нужен собственно алгоритм расчета календаря.
Например как в винде c 1980 по 2099 год.
Есть идея сварганить его для спека (вернее для Фени).
Вид для печати
Нужен собственно алгоритм расчета календаря.
Например как в винде c 1980 по 2099 год.
Есть идея сварганить его для спека (вернее для Фени).
Есть другой алгоритм, попроще и работает как раз в указанном диапазоне дат. Алгоритм следующий:
1) Из текущей даты нам надо получить количество дней прошедших от 1 января 1900 года. (этот день выпал на пн.)
2) Полученное число разделить на 7 - получаем день недели.
У меня была программа календаря даже на МК-52. Именно с её помощью я узнал, что родился в четверг.
Mick, Стандартный алгоритм
Январь — это 1, декабрь — 12 месяц. Для определения сдвига используется следующая формула: a=(14-месяц) div 12 (a — вспомогательная величина). Затем определяются год и месяц с учётом поправки: y=год-a (год — увеличиваем на 1 от исходного). m=месяц+12·a-2.
После вспомогательных операций вычисляется сам день недели:
result=(7000+(день+y+y div 4-y div 100+y div 400+(31×m) div 12)) mod 7
Для юлианского календаря формула выглядит так:
result=(6998+(день+y+y div 4+(31×m) div 12)) mod 7
Результат — число от 0 до 6, где 0 — воскресенье, 1 — понедельник, 2 — вторник, 3 — среда, 4 — четверг, 5 — пятница, 6 — суббота.
http://ru.wikipedia.org/wiki/%C2%E5%...ED%E4%E0%F0%FC
Во пищи для размышления подкинули :v2_conf2:
Спасибо, буду разбираться теперь.
А кто-нибудь эту тестил?
http://zxpress.ru/book_articles.php?id=562
(ветер дует отсюда: http://zxpress.ru/book_articles.php?id=325)
Mick, есть такая книжка: 128 советов начинающему программисту. Там тоже есть примеры программы "вечный календарь" (описание всех вариантов, дано в конце книжки)..