Có các thư viện trợ giúp việc này:
Apache commons-lang
Nếu bạn có dấu phẩy-lang của Apache trên classpath của mình, bạn có thể sử dụng DateUtils.truncate
để cắt bớt ngày tháng cho một số trường.
assertEquals(DateUtils.truncate(date1,Calendar.SECOND),
DateUtils.truncate(date2,Calendar.SECOND));
Có một cách viết tắt cho điều này:
assertTrue(DateUtils.truncatedEquals(date1,date2,Calendar.SECOND));
Lưu ý rằng 12: 00: 00.001 và 11: 59: 00.999 sẽ cắt ngắn thành các giá trị khác nhau, vì vậy điều này có thể không lý tưởng. Đối với điều đó, có một vòng:
assertEquals(DateUtils.round(date1,Calendar.SECOND),
DateUtils.round(date2,Calendar.SECOND));
AssertJ
Bắt đầu với phiên bản 3.7.0, AssertJ đã thêm một isCloseTo
xác nhận, nếu bạn đang sử dụng Java 8 Date / Time API.
LocalTime _07_10 = LocalTime.of(7, 10);
LocalTime _07_42 = LocalTime.of(7, 42);
assertThat(_07_10).isCloseTo(_07_42, within(1, ChronoUnit.HOURS));
assertThat(_07_10).isCloseTo(_07_42, within(32, ChronoUnit.MINUTES));
Nó cũng hoạt động với java Dates cũ:
Date d1 = new Date();
Date d2 = new Date();
assertThat(d1).isCloseTo(d2, within(100, ChronoUnit.MILLIS).getValue());