verify(HDateTime.make(2011, 1, 2, 3, 4, 5, utc, 0).compareTo(HDateTime.make(2011, 2, 2, 3, 4, 5, utc, 0)) < 0);
verify(HDateTime.make(2011, 1, 2, 3, 4, 5, utc, 0).compareTo(HDateTime.make(2012, 1, 2, 3, 4, 5, utc, 0)) < 0);
verify(HDateTime.make(2011, 1, 2, 3, 4, 5, utc, 0).compareTo(HDateTime.make(2011, 1, 2, 3, 4, 0, utc, 0)) > 0);
// encoding
HDateTime ts = HDateTime.make(1307377618069L, HTimeZone.make("New_York"));
verifyZinc(ts, "2011-06-06T12:26:58.069-04:00 New_York");
verifyEq(ts.date.toString(), "2011-06-06");
verifyEq(ts.time.toString(), "12:26:58.069");
verifyEq(ts.tzOffset, -4 * 60 * 60);
verifyEq(ts.tz.name, "New_York");
verifyEq(ts.tz.java.getID(), "America/New_York");
verifyEq(ts.millis(), 1307377618069L);
// convert back to millis
ts = HDateTime.make(ts.date, ts.time, ts.tz, ts.tzOffset);
verifyEq(ts.millis(), 1307377618069L);
// different timezones
ts = HDateTime.make(949478640000L, HTimeZone.make("New_York"));
verifyZinc(ts, "2000-02-02T03:04:00-05:00 New_York");
ts = HDateTime.make(949478640000L, HTimeZone.make("UTC"));