Java Ist System.currentTimeMillis() systemzeitzonenabhängig?

Jo, ThreeTen-Extra sind vor allem Ergänzungen, die Nice-to-Have, aber noch nicht ausgereift genug sind, um in Java einzufließen. Ein Beispiel hatte ich erwähnt:
H4110 schrieb:
Ich dachte, PeriodDuration von ThreeTen-Extra würde das liefern, aber so wie es aussieht (habe es nicht ausprobiert), würde es für 30.3.24, 22 Uhr bis 14.6.24, 21 Uhr als Ergebnis 76 Tage und -1 Stunden liefern, was eher suboptimal ist.
Was PeriodDuration idealerweise liefern sollte, ist eine streitbare Frage, und solange die nicht geklärt ist, wird diese Klasse sicherlich nicht adaptiert werden.
 
  • Gefällt mir
Reaktionen: CyborgBeta
Keine Ahnung, was Ärzte dran schreiben würden, aber als Programmierer würdest Du zum Zeitpunkt der Geburt Instant.now() aufrufen. Oder, falls Du die Möglichkeit in Betracht ziehst, dass wir uns in einer Simulation befinden (d.h. z.B. in einer JUnit-Test-Suite 😜), Clock#instant().

Aus dem Instant könntest Du dann mit Hilfe von atZone berechnen, welche Ortszeit die Ärzte von ihrer Uhr abgelesen haben, angenommen deren Uhr stellt automatisch und unverzüglich zwischen Sommer- und Winterzeit um (Ortszeit bedeutet LocalDateTime, welche im Prinzip die ZonedDateTime ohne Zeitzone ist).

Umgekehrt wird es schwierig. Die abgelesene Ortszeit kann nicht immer eindeutig in ein Instant umgerechnet werden. Siehe dazu die Dokumentation von LocalDateTime#atZone(ZoneId). Falls es 2:30 Uhr am Tag der Umstellung zur Winterzeit wäre, würde diese Funktion den früheren Zeitpunkt liefern:
In most cases, there is only one valid offset for a local date-time. In the case of an overlap, where clocks are set back, there are two valid offsets. This method uses the earlier offset typically corresponding to "summer".

Anderes Thema: der Unterschied zwischen Period und Duration. Erstere Klasse repräsesentiert den Blick auf einen Kalender. Letztere den Blick auf eine Stoppuhr. Und wie man beides am besten miteinander vereinbart, als Use-Case z.B. der Countdown zur EM, ist, wie gesagt, durchaus streitbar. PeriodDuration von ThreeTen-Extra ist sicherlich nicht der Weisheit letzter Schluss.

Ich habe übrigens das Video von Tom Scott komplett angeschaut, als Du es zum ersten Mal gepostet hast. Und ich stimme mit ihm in allen Punkten und insbesondere der Schlussfolgerung überein, die sinngemäß ungefähr war: "Fuck it, sei dankbar dafür, dass andere sich den Kopf zerbrochen und das implementiert haben, und benutze das einfach." Die beste Implementierung ist meiner Meinung nach java.time. Und das nicht nur wegen der Implementierung an sich, sondern auch wegen der Dokumentation (teilweise implizit durch korrekte Bennenung der Methoden). Ich habe mich vor langer Zeit mal aus einem entsprechenden Bedürfnis heraus in Joda-Time eingearbeitet und später auch die Migration zu java.time vollzogen, und dabei quasi schon selbst gesehen, was Tom Scott in dem Video beschreibt.
Ergänzung ()

Bezüglich LocalDateTime -> ZonedDateTime siehe auch noch hier und hier.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: CyborgBeta
Zurück
Oben