code: private int compareTimeOfDates(final Date d1, final Date d2) {
          final LocalTime lt1 = LocalDateTime.ofInstant(d1.toInstant(), ZONEID_UTC).toLocalTime();
          final LocalTime lt2 = LocalDateTime.ofInstant(d2.toInstant(), ZONEID_UTC).toLocalTime();
  
          return lt1.compareTo(lt2);
      }
docs: Because parsing done by base class returns a different date than parsing
  done by the user or converting duration to a date. But for the
  DurationField comparison only the time is important. This function helps
  comparing the time and ignores the values for day, month and year.
  
  @param d1
  date, which time will compared with the time of d2
  @param d2
  date, which time will compared with the time of d1
  @return the value 0 if the time represented d1 is equal to the time
  represented by d2; a value less than 0 if the time of d1 is
  before the time of d2; and a value greater than 0 if the time of
  d1 is after the time represented by d2.