Użyj jednej daty bazowej, jednego kierunku i czterech całkowitych przesunięć. Kalkulator najpierw stosuje część lat i miesięcy z użyciem ścisłej arytmetyki gregoriańskiej, przycina daty końca miesiąca, gdy miesiąc docelowy jest krótszy, a potem dodaje tygodnie i dni jako dokładne kroki. Główna odpowiedź to data końcowa, a dzień tygodnia i przesunięcie netto w dniach kalendarzowych służą jako szybka kontrola.
Krok po kroku dla gregoriańskiego przesunięcia daty:
- Odczytaj datę bazową jako dokładną datę ISO.
- Zamień kierunek na znak: dodawanie jest dodatnie, odejmowanie ujemne.
- Najpierw zastosuj lata i miesiące ze znakiem, przechodząc do roku i miesiąca docelowego przy zachowaniu oryginalnego dnia miesiąca jako celu.
- Jeśli miesiąc docelowy nie zawiera tego dnia, przytnij do ostatniego prawidłowego dnia tego miesiąca. Dlatego
2025-01-31 + 1 miesiąc = 2025-02-28, a 2024-02-29 + 1 rok = 2025-02-28.
- Zamień tygodnie i dni na dokładny przyrost z exactDayDelta=7w+d i zastosuj go dopiero po kroku rok/miesiąc z przycięciem.
- Wyprowadź końcowy dzień tygodnia z daty wynikowej, a przesunięcie netto z odległości między datą bazową i końcową w dniach UTC.