Dla następujący kod Java 8java 8 czas api - Instant.now (zegar) vs LocaldateTime.now (zegar)
1. System.out.println(LocalDateTime.now(Clock.systemDefaultZone()));
2. System.out.println(Instant.now(Clock.systemDefaultZone()));
Linia 1 print bieżący czas przez dodanie przesunięcia ale linia 2 drukuj aktualny czas bez dodawania offsetowy.
Sprawdziłem kod źródłowy obu i okazało się, że LocaDateTime.now(clock)
zwraca czas powrotu clock.instant()
, dodając przesunięcie, ale nie robiąc tego, Instant.now(clock)
.
Dlaczego tak to zaprojektowano? Czy nie oczekujemy tego samego wyniku w obu przypadkach?
Czy możesz mi powiedzieć, jaka jest potrzeba przekazania parametru Clock jako parametru? – nantitv
Zegar jest dozwolony jako parametr pozwalający na użycie przypadków, takich jak zegar stały lub offset w testowaniu, lub w różnych rozdzielczościach, jak na przykład sekundy lub minuty. https://docs.oracle.com/javase/8/docs/api/java/time/Clock.html –
@nantitv Odtąd przepisałem odpowiedź. To było trochę mgliste wcześniej. Czy teraz skutecznie odpowiada na twoje pytanie? –