如何为特定日期创建Java 8时钟

时间:2017-04-06 11:05:36

标签: java-8 java-time

关于日期相关单元测试,我正在找出为特定日期创建Java 8时钟的正确方法。根据{{​​3}}中提出的方法,我使用Unit testing a class with a Java 8 Clock方法进行尝试。但是,我没有意识到这样做的简短方法。

这是为特定日期创建Java 8时钟的正确和最佳方式吗?

第2版(根据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());
}

版本1

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());
}

0 个答案:

没有答案