Mam wrażenie, że źle zrozumiałem konwersję java.util.Date
zi do java.time.Instance
. Mam jakiś staroświecki kod, którego muszę używać, a ten kod używa java.util.Date
w swoim interfejsie API.Konwersja z `java.time.Instant` na` java.util.Date` dodaje przesunięcie UTC
Jestem nieco zdezorientowany, gdy w API Date
dodawane są korekty. To był mój zrozumieć, że Date
jest czas UTC („klasa Date ma odzwierciedlać skoordynowanego czasu uniwersalnego (UTC)”), ale kiedy tworzę Date
z Instant
przesunięcie w brzmieniu:
public class TestDateInstant {
@Test
public void instantdate() {
Instant i = Instant.now();
System.out.println(i);
Date d = Date.from(i);
System.out.println(d);
assertThat(i, equalTo(d.toInstant()));
}
}
twierdzenie trzyma, ale wyjście na konsoli to:
2017-09-26T08:24:40.858Z
Tue Sep 26 10:24:40 CEST 2017
Zastanawiam się dlaczego Date.from
wykorzystuje przesunięcie w tej sprawie.
'Date.from' nie używa przesunięcia. Przesunięcie jest stosowane, gdy * drukowanie * wartości 'Date'. – Andreas
Przydatny artykuł, aby zrozumieć, co się dzieje: https://codeblog.jonskeet.uk/2017/04/23/all-about-java-util-date/ –