Comment créer une horloge Java 8 pour une date spécifique


En ce qui concerne les tests unitaires dépendants de la date, je trouve la bonne façon de créer une horloge Java 8 pour une date spécifique. Selon l'approche proposée dans Test unitaire d'une classe avec une horloge Java 8, je l'essaie avec le Clock.fixed méthode. Cependant, je ne réalise pas une courte façon de le faire.

Est-ce le bon et le meilleur moyen de créer une horloge Java 8 pour une date spécifique?

Version 2 (selon les suggestions de @Meno, @Le lac]} et @basile-bourque)

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

Version 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());
}
Author: Community, 2017-04-06