Skip to content

Commit

Permalink
Correctly handle times after noon.
Browse files Browse the repository at this point in the history
Calendar.HOUR should only be used in conjunction with Calendar.AM_PM, in
all other cases Calendar.HOUR_OF_DAY must be used.
  • Loading branch information
omolenkamp authored and lukasj committed Feb 20, 2023
1 parent 440ba3d commit 81e79a1
Show file tree
Hide file tree
Showing 17 changed files with 94 additions and 89 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public void test() {
assertFalse("Clone should not be the same instance", policy == policyClone);
assertEquals("Clone should be of the same type", policy.getClass(), policyClone.getClass());
assertEquals("Clone's expiry time should be the same", policy.getExpiryTime().getTimeInMillis(), policyClone.getExpiryTime().getTimeInMillis());
assertEquals("Clone's expiry time should be 01:02:03.004 - hour", 1, policyClone.getExpiryTime().get(Calendar.HOUR));
assertEquals("Clone's expiry time should be 01:02:03.004 - hour", 1, policyClone.getExpiryTime().get(Calendar.HOUR_OF_DAY));
assertEquals("Clone's expiry time should be 01:02:03.004 - minute", 2, policyClone.getExpiryTime().get(Calendar.MINUTE));
assertEquals("Clone's expiry time should be 01:02:03.004 - second", 3, policyClone.getExpiryTime().get(Calendar.SECOND));
assertEquals("Clone's expiry time should be 01:02:03.004 - millisecond", 4, policyClone.getExpiryTime().get(Calendar.MILLISECOND));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public void test() {
writer.write(String.valueOf(calendar.get(Calendar.YEAR)));
writer.write(String.valueOf(calendar.get(Calendar.DATE)));
writer.write(String.valueOf(calendar.get(Calendar.MONTH)));
writer.write(String.valueOf(calendar.get(Calendar.HOUR)));
writer.write(String.valueOf(calendar.get(Calendar.HOUR_OF_DAY)));
writer.write(String.valueOf(calendar.get(Calendar.MINUTE)));
writer.write(String.valueOf(calendar.get(Calendar.SECOND)));
writer.toString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public TimeDateTester(String nameOfTest, int year, int month, int date, int hrs,
}

public TimeDateTester(String nameOfTest, Calendar dateTime) {
this(nameOfTest, dateTime.get(Calendar.YEAR), dateTime.get(Calendar.MONTH), dateTime.get(Calendar.DATE), dateTime.get(Calendar.HOUR), dateTime.get(Calendar.MINUTE), dateTime.get(Calendar.SECOND), 0);
this(nameOfTest, dateTime.get(Calendar.YEAR), dateTime.get(Calendar.MONTH), dateTime.get(Calendar.DATE), dateTime.get(Calendar.HOUR_OF_DAY), dateTime.get(Calendar.MINUTE), dateTime.get(Calendar.SECOND), 0);
}

public static RelationalDescriptor descriptor() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -906,12 +906,12 @@ protected java.time.LocalTime convertObjectToLocalTime(Object sourceObject) thro
Calendar cal = Helper.allocateCalendar();
cal.setTime((java.util.Date) sourceObject);
localTime = java.time.LocalTime.of(
cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND));
cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND));
Helper.releaseCalendar(cal);
} else if (sourceObject instanceof Calendar) {
Calendar cal = (Calendar) sourceObject;
localTime = java.time.LocalTime.of(
cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND));
cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND));
} else if (sourceObject instanceof Long) {
localTime = java.time.LocalTime.ofSecondOfDay((Long) sourceObject);
} else {
Expand Down Expand Up @@ -946,13 +946,13 @@ protected java.time.LocalDateTime convertObjectToLocalDateTime(Object sourceObje
cal.setTime((java.util.Date) sourceObject);
localDateTime = java.time.LocalDateTime.of(
cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH),
cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND));
cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND));
Helper.releaseCalendar(cal);
} else if (sourceObject instanceof Calendar) {
Calendar cal = (Calendar) sourceObject;
localDateTime = java.time.LocalDateTime.of(
cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH),
cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND));
cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND));
} else if (sourceObject instanceof Long) {
localDateTime = java.time.LocalDateTime.ofInstant(
java.time.Instant.ofEpochSecond((Long) sourceObject), getDefaultZoneOffset());
Expand Down Expand Up @@ -987,14 +987,14 @@ protected java.time.OffsetDateTime convertObjectToOffsetDateTime(Object sourceOb
cal.setTime((java.util.Date) sourceObject);
offsetDateTime = java.time.OffsetDateTime.of(
cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH),
cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND) * 1000000,
cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND) * 1000000,
java.time.ZoneOffset.ofTotalSeconds((cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET)) / 1000));
Helper.releaseCalendar(cal);
} else if (sourceObject instanceof Calendar) {
Calendar cal = (Calendar) sourceObject;
offsetDateTime = java.time.OffsetDateTime.of(
cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH),
cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND) * 1000000,
cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND) * 1000000,
java.time.ZoneOffset.ofTotalSeconds((cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET)) / 1000));
} else if (sourceObject instanceof Long) {
offsetDateTime = java.time.OffsetDateTime.ofInstant(
Expand Down Expand Up @@ -1033,13 +1033,13 @@ protected java.time.OffsetTime convertObjectToOffsetTime(Object sourceObject) th
Calendar cal = Helper.allocateCalendar();
cal.setTime((java.util.Date) sourceObject);
offsetTime = java.time.OffsetTime.of(
cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND),
cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND),
java.time.ZoneOffset.ofTotalSeconds((cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET)) / 1000));
Helper.releaseCalendar(cal);
} else if (sourceObject instanceof Calendar) {
Calendar cal = (Calendar) sourceObject;
offsetTime = java.time.OffsetTime.of(
cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND),
cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND),
java.time.ZoneOffset.ofTotalSeconds((cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET)) / 1000));
} else if (sourceObject instanceof Long) {
offsetTime = java.time.OffsetTime.ofInstant(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1175,7 +1175,7 @@ private String truncateMillis(String xmlFormat) {
}

private String stringFromCalendar(Calendar sourceCalendar) {
if (!(sourceCalendar.isSet(Calendar.HOUR) || sourceCalendar.isSet(Calendar.MINUTE) || sourceCalendar.isSet(Calendar.SECOND) || sourceCalendar.isSet(Calendar.MILLISECOND))) {
if (!(sourceCalendar.isSet(Calendar.HOUR_OF_DAY) || sourceCalendar.isSet(Calendar.MINUTE) || sourceCalendar.isSet(Calendar.SECOND) || sourceCalendar.isSet(Calendar.MILLISECOND))) {
return stringFromCalendar(sourceCalendar, Constants.DATE_QNAME);
} else if (!(sourceCalendar.isSet(Calendar.YEAR) || sourceCalendar.isSet(Calendar.MONTH) || sourceCalendar.isSet(Calendar.DATE))) {
return stringFromCalendar(sourceCalendar, Constants.TIME_QNAME);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,13 +115,13 @@ public Object getControlObject() {

parsedDate = new SimpleDateFormat(DATE_FORMAT).parse("2013-02-17");
date = Calendar.getInstance();
date.setTime(parsedDate); date.clear(Calendar.HOUR); date.clear(Calendar.MINUTE); date.clear(Calendar.SECOND); date.clear(Calendar.MILLISECOND); date.clear(Calendar.ZONE_OFFSET);
date.setTime(parsedDate); date.clear(Calendar.HOUR_OF_DAY); date.clear(Calendar.MINUTE); date.clear(Calendar.SECOND); date.clear(Calendar.MILLISECOND); date.clear(Calendar.ZONE_OFFSET);
parsedDate = new SimpleDateFormat(DATE_FORMAT).parse("2013-04-09");
date2 = Calendar.getInstance();
date2.setTime(parsedDate); date2.clear(Calendar.HOUR); date2.clear(Calendar.MINUTE); date2.clear(Calendar.SECOND); date2.clear(Calendar.MILLISECOND); date2.clear(Calendar.ZONE_OFFSET);
date2.setTime(parsedDate); date2.clear(Calendar.HOUR_OF_DAY); date2.clear(Calendar.MINUTE); date2.clear(Calendar.SECOND); date2.clear(Calendar.MILLISECOND); date2.clear(Calendar.ZONE_OFFSET);
parsedDate = new SimpleDateFormat(DATE_FORMAT).parse("2013-04-18");
date3 = Calendar.getInstance();
date3.setTime(parsedDate); date3.clear(Calendar.HOUR); date3.clear(Calendar.MINUTE); date3.clear(Calendar.SECOND); date3.clear(Calendar.MILLISECOND); date3.clear(Calendar.ZONE_OFFSET);
date3.setTime(parsedDate); date3.clear(Calendar.HOUR_OF_DAY); date3.clear(Calendar.MINUTE); date3.clear(Calendar.SECOND); date3.clear(Calendar.MILLISECOND); date3.clear(Calendar.ZONE_OFFSET);

parsedDate = new SimpleDateFormat(DATE_TIME_FORMAT).parse("2013-02-17T23:21:00");
dateTime = Calendar.getInstance(); dateTime.clear();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2867,7 +2867,7 @@ public void testCalendarToString_default_time_null() {
public void testCalendarToString_default_time_0ms() {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.HOUR, 7);
calendar.set(Calendar.HOUR_OF_DAY, 7);
calendar.set(Calendar.MINUTE, 47);
calendar.set(Calendar.SECOND, 15);
calendar.set(Calendar.MILLISECOND, 0);
Expand All @@ -2879,7 +2879,7 @@ public void testCalendarToString_default_time_0ms() {
public void testCalendarToString_default_time_1ms() {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.HOUR, 7);
calendar.set(Calendar.HOUR_OF_DAY, 7);
calendar.set(Calendar.MINUTE, 47);
calendar.set(Calendar.SECOND, 15);
calendar.set(Calendar.MILLISECOND, 1);
Expand All @@ -2891,7 +2891,7 @@ public void testCalendarToString_default_time_1ms() {
public void testCalendarToString_default_time_10ms() {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.HOUR, 7);
calendar.set(Calendar.HOUR_OF_DAY, 7);
calendar.set(Calendar.MINUTE, 47);
calendar.set(Calendar.SECOND, 15);
calendar.set(Calendar.MILLISECOND, 10);
Expand All @@ -2903,7 +2903,7 @@ public void testCalendarToString_default_time_10ms() {
public void testCalendarToString_default_time_100ms() {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.HOUR, 7);
calendar.set(Calendar.HOUR_OF_DAY, 7);
calendar.set(Calendar.MINUTE, 47);
calendar.set(Calendar.SECOND, 15);
calendar.set(Calendar.MILLISECOND, 100);
Expand Down Expand Up @@ -3786,7 +3786,7 @@ public void testPostADDateTimeToUtilDateWithHrMinSecMillis() {
cal.set(Calendar.YEAR, 0001);
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR, 1);
cal.set(Calendar.HOUR_OF_DAY, 1);
cal.set(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, 1);
cal.set(Calendar.MILLISECOND, 1);
Expand Down Expand Up @@ -3818,7 +3818,7 @@ public void testPostADDateTimeToUtilDate_DateTime() {
cal.set(Calendar.YEAR, 0001);
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR, 1);
cal.set(Calendar.HOUR_OF_DAY, 1);
cal.set(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, 1);
cal.set(Calendar.MILLISECOND, 1);
Expand Down Expand Up @@ -3857,7 +3857,7 @@ public void testPostADTimeToSQLTime_Date() {
cal.set(Calendar.YEAR, 0001);
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR, 1);
cal.set(Calendar.HOUR_OF_DAY, 1);
cal.set(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, 1);
cal.set(Calendar.MILLISECOND, 1);
Expand All @@ -3876,7 +3876,7 @@ public void testPostADTimeToSQLTime_DateTime() {
cal.set(Calendar.YEAR, 0001);
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR, 1);
cal.set(Calendar.HOUR_OF_DAY, 1);
cal.set(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, 1);
cal.set(Calendar.MILLISECOND, 1);
Expand Down Expand Up @@ -3912,7 +3912,7 @@ public void testPostADDateStringToUtilDate() {
cal.set(Calendar.YEAR, 0001);
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR, 1);
cal.set(Calendar.HOUR_OF_DAY, 1);
cal.set(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, 1);
cal.set(Calendar.MILLISECOND, 1);
Expand Down Expand Up @@ -3944,7 +3944,7 @@ public void testPostADDateStringToUtilDate_DateTime() {
cal.set(Calendar.YEAR, 0001);
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR, 1);
cal.set(Calendar.HOUR_OF_DAY, 1);
cal.set(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, 1);
cal.set(Calendar.MILLISECOND, 1);
Expand All @@ -3963,7 +3963,7 @@ public void testPostADDateStringToSqlTimestamp() {
cal.set(Calendar.YEAR, 0001);
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR, 1);
cal.set(Calendar.HOUR_OF_DAY, 1);
cal.set(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, 1);
cal.set(Calendar.MILLISECOND, 1);
Expand All @@ -3981,7 +3981,7 @@ public void testPostADDateStringToSqlTimestamp_DateTime() {
cal.set(Calendar.YEAR, 0001);
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR, 1);
cal.set(Calendar.HOUR_OF_DAY, 1);
cal.set(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, 1);
cal.set(Calendar.MILLISECOND, 1);
Expand Down Expand Up @@ -4010,7 +4010,7 @@ public void testPostADDateStringToSqlTimestamp_Time() {

Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(Calendar.HOUR, 1);
cal.set(Calendar.HOUR_OF_DAY, 1);
cal.set(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, 1);
cal.set(Calendar.MILLISECOND, 1);
Expand Down

0 comments on commit 81e79a1

Please sign in to comment.