Object that keeps information of both :
- a calendar date : a year, a month [1-12], and a dayOfMonth [1-28|29|30|31].
- a time (in a day) : an hour [0-23], a minute [0-59], a second [0-59], and a nano [0-999_999_999].
Month is INTENTIONALLY returned as an int, in order to avoid dependency on Month.
There are no public constructors, all of the objects must be created using factory methods.