Für folgenden Code für Java 8
%Vor%Zeile 1 druckt aktuelle Zeit durch Hinzufügen von Offset, aber Linie 2 druckt aktuelle Zeit ohne Offset.
Ich habe den Quellcode von beiden überprüft und festgestellt, dass LocaDateTime.now(clock)
return clock.instant()
return time durch Hinzufügen von offset aber Instant.now(clock)
nicht tut.
Warum hat es so gestaltet? Erwarten wir in beiden Fällen nicht dasselbe Ergebnis?
UPDATE: Instant hat nichts mit UTC im Sinne der Zeitzone zu tun. Es ist mit UTC nur als Zeitstandard verbunden.
Der Hauptunterschied ist der Rückgabetyp. Sie haben unterschiedliche String-Repräsentationen, weil die Typen selbst sehr unterschiedliche Bedeutungen haben.
Sofort # now (Uhr) gibt Sofort zurück. Ein Instant ist "[a] n momentaner Punkt die Zeitlinie ".
LocalDate # now (Uhr) gibt LocalDate zurück. Eine LocalTime ist "eine Beschreibung der lokalen Zeit als auf einer Wanduhr gesehen ".
Als Ergebnis bedeuten Instant # now (Clock) und LocalDate # now (Clock) sehr unterschiedliche Dinge und haben natürlich unterschiedliche Ergebnisse. Das Wichtigste, was sie gemeinsam haben, ist ein Name. Methodennamen sind Staub. Siehe die Typen.
Bei einer festen Uhr geben sowohl Instant.now (Uhr) als auch LocalDate.now (Uhr) konstante Werte zurück. Wenn Sie Clock als Parameter akzeptieren, können Sie beispielsweise die Referenzzeit oder die Taktauflösung steuern.
Tags und Links java java-8 datetime time java.time.instant