  Legal expert systems routinely rely on date computations to determine the
eligibility of a citizen to social benefits or whether an application has been
filed on time. Unfortunately, date arithmetic exhibits many corner cases, which
are handled differently from one library to the other, making faithfully
transcribing the law into code error-prone, and possibly leading to heavy
financial and legal consequences for users. In this work, we aim to provide a
solid foundation for date arithmetic working on days, months and years. We
first present a novel, formal semantics for date computations, and formally
establish several semantic properties through a mechanization in the F* proof
assistant. Building upon this semantics, we then propose a static analysis by
abstract interpretation to automatically detect ambiguities in date
computations. We finally integrate our approach in the Catala language, a
recent domain-specific language for formalizing computational law, and use it
to analyze the Catala implementation of the French housing benefits, leading to
the discovery of several date-related ambiguities.
