It's awesome work. Even though the patch includes many changes, there are few trivial comments. It also includes enough unit tests. It looks almost perfect to me.
Since trivial change are required, I submitted the updated patch that reflects them.
In detail, the changes of the last patch:
- removes commented out lines
- renames IntervalDatum::interval to milliseconds because the name 'interval' seems duplicated to the class name.
- removes printStackTrace in legal exception handling