关于日期相关单元测试,我正在找出为特定日期创建Java 8时钟的正确方法。根据{{3}}中提出的方法,我使用Unit testing a class with a Java 8 Clock方法进行尝试。但是,我没有意识到这样做的简短方法。
这是为特定日期创建Java 8时钟的正确和最佳方式吗?
Clock.fixed
,@Meno和@LakiGeri的建议)private static Clock utcClockOf(int year, int month, int day) {
ZoneOffset offset = ZoneOffset.UTC;
Instant inst = LocalDate
.of(year, month, day)
.atStartOfDay(offset)
.toInstant();
return Clock.fixed(inst, offset.normalized());
}
static Clock clockOf(int year, int month, int day) {
LocalDate now = LocalDate.of(year, month, day);
long days = now.toEpochDay();
long secs = days*24*60*60;
Instant inst = Instant.ofEpochSecond(secs);
return Clock.fixed(inst, ZoneId.systemDefault());
}