Здавалося б, порахувати кількість днів між двома датами — тривіальна задача: відняти одну дату від іншої. Але кілька особливостей календаря роблять це складнішим, ніж виглядає на перший погляд.
Високосні роки
Кожні чотири роки до лютого додається 29-й день, за винятком років, кратних 100, які не кратні 400 (тому 2000 рік був високосним, а 1900 — ні). Наївний підрахунок днів без урахування цього правила дає неправильний результат для дат, що охоплюють різну кількість високосних років.
Різна кількість днів у місяцях
Місяці мають від 28 до 31 дня, тож обчислення "різниці в місяцях" неоднозначне: різниця між 31 січня і 28 лютого — це один місяць чи майже місяць? Різні бібліотеки й системи відповідають на це питання по-різному.
Часові пояси і межі доби
Якщо дати включають час доби, а не лише день, різниця в часових поясах може змінити результат підрахунку днів на одиницю: 23:30 у Києві та 21:30 у Лондоні того самого моменту можуть припадати на різні календарні дні залежно від того, у якому поясі рахувати.
Навіщо це потрібно
- Розрахувати точну кількість днів до дедлайну чи від дати початку проєкту.
- Обчислити тривалість оренди, підписки чи гарантійного терміну.
- Перевірити код обробки дат на граничних випадках (високосні роки, межі місяців).
Неоднозначність "різниці в місяцях" на межі коротких місяців
Якщо відняти від 31 березня один місяць, результат неочевидний — лютого 31-го числа не існує, тож різні бібліотеки повертають або 28 лютого (найближча існуюча дата), або 3 березня (переносять "зайві" дні на наступний місяць). Обидва підходи по-своєму логічні, але дають різні відповіді, тому при звірці розрахунків із іншим інструментом варто спершу перевірити саме цей граничний випадок.