Falsche Presumption
Local ist eher Datum/Uhr Darstellung einschließlich Zeitzonen für die Menschen.
Ihre Aussage ist falsch: A LocalDateTime
keine Zeitzone hat. Keine Zeitzone zu haben, ist der ganze Punkt dieser Klasse.
diese Klasse doc zitieren:
Diese Klasse speichert keine oder eine Zeitzone darstellen. Stattdessen ist es eine Beschreibung des Datums, wie es für Geburtstage verwendet wird, kombiniert mit der lokalen Zeit, die an einer Wanduhr zu sehen ist. Es kann keinen Augenblick auf der Zeitlinie ohne zusätzliche Informationen wie einen Offset oder eine Zeitzone darstellen.
Also Local…
bedeutet "nicht in Zonen eingeteilt".
Sofort
Ein Instant
ist ein Moment auf der Timeline in UTC, eine Zählung von nanoseconds seit der Epoche des ersten Moments des Jahres 1970 UTC (im Grunde Klasse doc für winzigsten Details). Da die meisten Ihrer Geschäftslogik, Datenspeicherung und Datenaustausch in UTC erfolgen sollten, ist dies eine praktische Klasse, die häufig verwendet wird.
Instant instant = Instant.now() ; // Capture the current moment in UTC.
ZoneID
ZoneId
A ist ein time zone.
Eine Zeitzone ist ein Offset von so vielen Stunden und Minuten von UTC entfernt. Ein neuer Tag beginnt zum Beispiel früher in Paris als in Montréal. Wir müssen also die Zeiger der Uhr verschieben, um besser zu reflektieren, noon (wenn die Sonne direkt über der Sonne ist) für eine bestimmte Region. Je weiter östlich/westlich von der UTC-Linie in Westeuropa/Afrika entfernt, desto größer ist der Versatz.
Eine Zeitzone ist eine Reihe von Regeln für den Umgang mit Anpassungen und Anomalien, wie sie von einer lokalen Gemeinschaft oder Region praktiziert werden. Die häufigste Anomalie ist der allseits beliebte Irrsinn Daylight Saving Time (DST).
Eine Zeitzone hat die Historie vergangener Regeln, aktueller Regeln und Regeln für die nahe Zukunft bestätigt.
Diese Regeln ändern sich häufiger als erwartet. Achten Sie darauf, die Regeln Ihrer Date-Time-Bibliothek, normalerweise eine Kopie von the 'tz' database, auf dem neuesten Stand zu halten. In Java 8 ist es einfacher denn je, auf dem neuesten Stand zu bleiben, indem Oracle eine Timezone Updater Tool veröffentlicht.
Verwenden Sie proper time zone names. Diese Namen haben die Form Kontinent plus SLASH plus Stadt oder Region.Vermeiden Sie die 3-4 Buchstabencodes wie EST
oder IST
. Sie sind weder standardisiert noch einzigartig. Sie verwirren weiter die Unordnung von DST.
Zeitzone = Offset + Regeln Anpassungen
ZoneId z = ZoneId.of(“Africa/Tunis”) ;
Manchmal haben wir nur eine ohne die Regeln gegenüber. Java stellt dazu die ZoneOffset
eine Unterklasse von ZoneId
zur Verfügung. Beachten Sie die dort definierte handliche Konstante ZoneOffset.UTC
.
ZoneOffset offset = ZoneOffset.of(-5 , 0) ; // “-05:00”
ZonedDateTime
Die ZonedDateTime
Klasse ist ein Instant mit zugeordnetem ZoneID.
ZonedDateTime = Sofort + ZoneID
Fast alle Backend, Datenbanken, Business-Logik, Datenpersistenz, Datenaustausch alle in UTC sein sollte. Für die Präsentation für Benutzer müssen Sie sich jedoch auf eine vom Benutzer erwartete Zeitzone einstellen. Dies ist der Zweck der Klasse ZonedDateTime
und der formatter classes, die zum Generieren von String-Darstellungen dieser Datums- und Uhrzeitwerte verwendet wird.
ZonedDateTime zdt = instant.atZone(z) ;
Local, LOCALDATE, Localtime
Die "local" Datum Zeitklassen, LocalDateTime
, LocalDate
, LocalTime
, sind eine andere Art von Lebewesen. Sie sind nicht an eine bestimmte Lokalität oder Zeitzone gebunden. Sie sind nicht an die Zeitlinie gebunden. Sie haben keine wirkliche Bedeutung, bis Sie sie an einen Ort gelten auf der Timeline einen Punkt zu finden.
Zum Beispiel: „Weihnachten am 25. Dezember 2015 um Mitternacht beginnt“ ist ein Local. Mitternacht schlägt in verschiedenen Momenten in Paris als in Montréal, und anders wieder in Seattle und in Auckland.
LocalDate ld = LocalDate.of(2018 , Month.DECEMBER , 25) ;
LocalTime lt = LocalTime.MIN ; // 00:00:00
LocalTime ldt = LocalDateTime.of(ld , lt) ; // Xmas morning anywhere.
Ein weiteres Beispiel, „hat Acme Unternehmen eine Politik, die beginnt um 12.30 Uhr an jedem seiner Fabriken weltweit Mittagszeit“ ein LocalTime
ist. Um wirkliche Bedeutung zu haben, müssen Sie es in die Timeline anzuwenden, um den Moment der 00.30 am Stuttgart Fabrik oder 00.30 am Rabat Fabrik oder 00.30 am Sydney Fabrik Figur.
Also für Business-Anwendungen, die „Local“ Typen sind nicht häufig, da sie nur die allgemeine Idee einer möglichen Datum oder die Uhrzeit nicht einem bestimmten Zeitpunkt auf der Zeitleiste darstellen verwendet. Business-Apps neigen dazu, sich um den genauen Zeitpunkt zu kümmern, an dem eine Rechnung eingeht, ein Produkt für den Transport geliefert wird, ein Mitarbeiter eingestellt wurde oder das Taxi die Garage verlässt. So verwenden Business-App-Entwickler fast ausschließlich Instant
und ZonedDateTime
. Auf der anderen Seite sollten Sie für die Buchung zukünftige Ereignisse mit den Local…
Typen berücksichtigen (ex: Zahnarzttermine) weit genug in der Zukunft, wo man Politiker Verfeinerung die Zeitzone mit wenig forewarning riskieren, da sie so oft tun.
Instant ist elementarer, wickelt den Standard lange für die UTC. Für eine Cron-ähnliche Charge nicht so logisch eine Wahl. –
** Falsche ** Definition. 'LocalDateTime' hat * keine * Zeitzone! –