\section{Joda Time} Joda Time~\cite{jodatime} is a Java date and time API. It provides a quality replacement for the Java date and time classes. %We used this API because the Java Date and Calendar classes are badly designed. \salespoint{} incorporates Joda Time, because it is open source, easy to use and offers better performance characteristics than Java date and time classes. Key concepts from Joda Time used in \salespoint{} are \textit{Instant}, \textit{Interval}, \textit{Duration} and \textit{Period}. Instant is explained in the Joda Time documentation as follows: \begin{quote} The most frequently used concept in Joda-Time is that of the \textit{instant}. An Instant is defined as \textit{an instant in the datetime continuum specified as a number of milliseconds from 1970-01-01T00:00Z}. This definition of milliseconds is consistent with that of the JDK in \code{Date} or \code{Calendar}. Interoperating between the two APIs is thus simple. \end{quote} An \textit{Interval} is defined by two Instants, the start and the end. An Interval is \textit{half-open}, that is to say the start is inclusive but the end is not. The end is always greater or equal than the start. A \textit{Duration} in Joda Time represents a duration in time, exact to the milisecond. Durations can be thought of as length of an Interval. A Duration does not have a start and an end, but is rather the difference $end - start$. A \textit{Period} also represents a duration in time, but in a more abstract way. A Period may be a month, which may have 28, 29, 30 or 31 days. The absolute length in miliseconds of those periods differ. If you, for example have an Instant of February, 1st and add a Period of one month, the result will be an Instant of March, 1st. Adding instead a Period of 30 days to an Instant of February, 1st will result in an Instant of March, 2nd or March 3rd, depending if the Instant is in a leap year or not.