Калькулятор срока давности
Вычисляет точную дату, которая была заданное количество лет назад от выбранной даты.
Логика вычислений
Калькулятор определяет дату, которая была заданное число лет назад от выбранной начальной даты, и день недели для этой даты. Сначала из года начальной даты вычитается количество лет, а месяц и число сохраняются:
Г_рез = Г_нач − N М_рез = М_нач Д_рез = Д_нач
где:
- Г_рез, М_рез, Д_рез — год, месяц и число искомой даты;
- Г_нач, М_нач, Д_нач — год, месяц и число начальной даты;
- N — количество лет назад, лет.
Если начальная дата — 29 февраля, а полученный год оказывается невисокосным (в нём нет 29 февраля), число результата переносится на последний день февраля:
Д_рез = 28 (при Д_нач = 29, М_нач = февраль и невисокосном Г_рез)
Год считается високосным, если он кратен 4, но не кратен 100, либо кратен 400:
високосный, если (Г_рез mod 4 = 0 и Г_рез mod 100 ≠ 0) или Г_рез mod 400 = 0
где:
- mod — остаток от деления.
По полученной дате определяется день недели — порядковый номер дня в неделе с переводом в название (воскресенье, понедельник, …, суббота):
День недели = f(Г_рез, М_рез, Д_рез)
где:
- f — функция календаря, сопоставляющая дате её день недели.
Примеры расчётов
| Начальная дата | N, лет | Г_рез | Корректировка 29 февраля | Результат (дата, день недели) | Комментарий |
|---|---|---|---|---|---|
| 19.06.2024 | 10 | 2024 − 10 = 2014 | нет | 19.06.2014, четверг | Обычный случай: год уменьшается, месяц и число сохраняются. |
| 01.01.2020 | 20 | 2020 − 20 = 2000 | нет | 01.01.2000, суббота | Круглые числа; 2000 високосный (кратен 400). |
| 29.02.2024 | 1 | 2024 − 1 = 2023 | 29 → 28 (2023 невисокосный) | 28.02.2023, вторник | Граничный: 29 февраля переносится на 28-е. |
| 29.02.2024 | 3 | 2024 − 3 = 2021 | 29 → 28 (2021 невисокосный) | 28.02.2021, воскресенье | Тот же перенос 29 февраля при другом N. |
| 31.12.2000 | 100 | 2000 − 100 = 1900 | нет | 31.12.1900, понедельник | 1900 невисокосный (кратен 100, но не 400). |
| 15.03.2025 | 5 | 2025 − 5 = 2020 | нет | 15.03.2020, воскресенье | 2020 високосный (кратен 4, не кратен 100). |
| 25.12.2024 | 50 | 2024 − 50 = 1974 | нет | 25.12.1974, среда | Большой сдвиг на 50 лет назад. |
