Calculation Methodology
Every result is built from an explicit date model, policy, and precision class. This page documents the shared rules used across the calculator collection.
Date-only values and exact instants
Birthdays, due dates, cutoffs, anniversaries, and ordinary dates are treated as timezone-free Gregorian calendar dates. They are not parsed as UTC-midnight timestamps. A time becomes an exact instant only after a timezone is attached, which prevents a date from shifting merely because a visitor lives elsewhere.
Calendar age
Completed years are counted to the most recent annual birthday under the chosen February 29 policy. Completed months are balanced next, followed by remaining days. This preserves real month lengths. Total elapsed days, full weeks, hours, and minutes are calculated separately so an elapsed measure is never presented as a calendar-age approximation.
Leap-day and month-end policies
For a February 29 birthday in a non-leap year, the user chooses whether the anniversary is observed on February 28 or March 1. Calendar addition uses a visible constrain rule by default: when the target month has no matching day, the result becomes that month's last valid date. Pages that use a different rule must say so beside the input or result.
Elapsed, inclusive, and business-day counts
Elapsed duration excludes the starting instant. Calendar-date tools can include the start date, end date, both, or neither, but the selected boundary rule is always reported. Business-day calculations apply the displayed weekend definition and user-provided exclusions; they do not silently assume a country's holiday calendar.
Precision classes
Exact calendar outputs are deterministic under displayed rules. Rule-based outputs depend on a convention such as a cutoff or boundary choice. Estimates use a source table, population average, editable assumption, or simplified model. Entertainment and creative outputs are not factual measurements. The result badge identifies the applicable class.
Input validation and impossible cases
Required values are checked before calculation. Reversed ranges, unsupported dates, invalid times, and out-of-scope source years produce a clear error or an explicitly signed difference rather than a plausible-looking answer. Related values are derived from the same normalized inputs to avoid contradictions inside one result.
Testing and release checks
Shared engines are tested with fixed examples, leap years, century boundaries, month ends, reversed inputs, and responsive browser checks. High-risk changes are verified across every tool that uses the same engine. Automated checks support review but do not replace inspecting the rendered page and its result wording.
Corrections and versioning
A suspected defect is reproduced with a stable clock and named policy, turned into a failing regression test, corrected in the shared method or source data, and verified before publication. Review dates change only after a substantive review; they are not refreshed merely to make a page appear recent.