TimeDelay implements Serializable, Comparable<TimeDelay> { public LocalDateTime atDate(LocalDate date) { return getEffectiveTime().atDate(date); } private  TimeDelay(); private  TimeDelay(LocalTime expectedTime, Long delay); static TimeDelay now(); static TimeDelay of(LocalTime expectedTime); static TimeDelay of(LocalTime expectedTime, Long delay); static TimeDelay of(LocalTime expectedTime, Long delay, TemporalUnit unit); static TimeDelay computeFrom(LocalTime expectedTime, LocalTime effectiveTime); static TimeDelay from(TimeDelay timeDelay); static TimeDelay fromWithoutDelay(TimeDelay expectedTime); TimeDelay withDelay(Long delay); boolean isAfter(TimeDelay target); boolean isBefore(TimeDelay target); LocalTime getEffectiveTime(); LocalDateTime atDate(LocalDate date); @Override String toString(); @Override boolean equals(Object obj); @Override int hashCode(); @Override int compareTo(TimeDelay target); final LocalTime getExpectedTime(); final long getDelay();  }
@Test public void testAtDate() throws Exception { LocalDateTime dateTime = LocalDateTime.now(); LocalTime time = dateTime.toLocalTime(); TimeDelay timeDelay = TimeDelay.of(time); Assert.assertEquals(dateTime, timeDelay.atDate(dateTime.toLocalDate())); }