Jemand hat mich gefragt, was der beste Weg ist, eine neue Bibliothek zu lernen? Meine Antwort ist, dass es in den tatsächlichen Projekten verwendet wird. In einem realen Projekt wird es eine Vielzahl von Anforderungen geben, die Entwickler dazu veranlassen, diese neue Bibliothek zu erforschen und zu erforschen. Kurz gesagt, nur die Aufgabe selbst wird Sie wirklich ermutigen, zu erkunden und zu lernen. Gleiches gilt für das neue Datum und die Uhrzeit-API von Java 8. Um diese neue Bibliothek von Java 8 zu lernen, habe ich hier 20 aufgabenorientierte Beispiele erstellt. Beginnen wir mit einer einfachen Aufgabe, z. B. wie die Java 8 -Zeit- und Datumsbibliothek heute verwendet werden soll, und generieren Sie dann ein vollständiges Datum mit der Zeit- und Zeitzone, und untersuchen Sie dann, wie Sie einige praktische Aufgaben erledigen können, z.
Beispiel 1 Wie man das Datum des Tages in Java 8 bekommt
Es gibt eine Klasse in Java 8 namens LocalDate, die verwendet werden kann, um das heutige Datum darzustellen. Diese Klasse unterscheidet sich geringfügig von java.util.date, da sie nur Daten und keine Zeit enthält. Wenn Sie also nur das Datum ohne Einbeziehung der Zeit darstellen müssen, können Sie ihn verwenden.
LocalDate heute = localDate.now (); System.out.println ("Heute lokaler Datum:" + heute); Ausgabe des heutigen lokalen Datums: 2014-01-14Sie können sehen, dass es das heutige Datum ohne Zeitinformationen erstellt. Es formatiert auch das Datum und gibt es dann aus. Im Gegensatz zur Vorgängerdatumklasse werden die gedruckten Daten nicht formatiert.
Beispiel 2 So erhalten Sie das aktuelle Jahr, den Monat, den Tag in Java 8
Die LocalDate -Klasse bietet einige bequeme Methoden zum Extrahieren von Jahr, Monat, Tag und anderen Datumattributen. Mit diesen Methoden können Sie jedes Datumattribut erhalten, das Sie benötigen, ohne Klassen wie java.util.calendar zu verwenden:
LocalDate heute = localDate.now (); int Jahr = heute.Getyear (); int monon = Today.GetMonthValue (); int day = Today.Getayofmonth (); System.out.printf ("Jahr: %d Monat: %D Tag: %d /t %n", Jahr, Monat, Tag); Ausgabe heute lokaler Datum: 2014-01-14 Jahre: 2014 Monat: 1 Tag: 14Wie Sie sehen können, ist es sehr einfach, Jahres- und Monatsinformationen in Java 8 zu erhalten. Verwenden Sie einfach die entsprechende Getter -Methode ohne Speicher, und es ist sehr intuitiv. Sie können es mit der alten Schreibmethode vergleichen, um das laufende Jahr, Monat und Tag in Java zu erhalten.
Beispiel 3 So erhalten Sie ein bestimmtes Datum in Java 8
Im ersten Beispiel sehen wir, dass es sehr einfach ist, das Datum des Tages durch die statische Methode zu generieren (), aber durch eine andere sehr nützliche Fabrikmethode localdate.of () können Sie ein beliebiges Datum erstellen, das den Parameter des Jahres, des Monats und des Tages annimmt und dann eine äquivalente lokale Instanzinstanz zurückgibt. Es gibt eine weitere gute Nachricht über diese Methode, dass sie in der vorherigen API keine Fehler gemacht hat. Zum Beispiel kann das Jahr erst im Jahr 1900 beginnen, der Monat muss bei 0 usw. beginnen. Was auch immer Sie über das Datum schreiben, das hier beispielsweise im folgenden Beispiel ist, es gibt den 14. Januar dar und es gibt keine versteckte Logik.
LocalDate Datum vonBirth = localDate.of (2010, 01, 14); System.out.println ("Ihr Geburtsdatum ist:" + DateofBirth); Ausgabe: Ihr Geburtsdatum ist: 2010-01-14Es ist ersichtlich, dass das Datum der Schöpfung das ist, was wir am 14. Januar 2014 geschrieben haben.
Beispiel 4 So überprüfen Sie, ob zwei Daten in Java 8 gleich sind
Wenn Sie über die tatsächliche Aufgabe der Verarbeitung von Zeit und Datum in der Realität sprechen, besteht eine gemeinsame Sache darin, zu überprüfen, ob die beiden Daten gleich sind. Sie können oft auf Fragen stellen, ob heute ein besonderer Tag wie Geburtstag, Jubiläum oder Feiertage ist. Manchmal erhalten Sie ein Datum, um zu überprüfen, ob es sich beispielsweise um einen bestimmten Tag handelt. Das folgende Beispiel hilft Ihnen dabei, diese Art von Aufgabe in Java 8 zu erledigen. Wie Sie vielleicht denken, überschreibt LocalDate die Equals -Methode, um Daten wie folgt zu vergleichen:
LocalDate Datum1 = localDate.of (2014, 01, 14); if (Datum1.Equals (Today)) {System.out.printf ("Heute %s und Datum1 %s sind gleiche Datum %n", heute, Datum1); } Ausgabe heute 2014-01-14 und Datum1 2014-01-14 sind das gleiche DatumIn diesem Fall sind die beiden Vergleichsdaten gleich. Wenn Sie gleichzeitig eine formatierte Datumszeichenfolge in den Code erhalten, müssen Sie sie in ein Datum analysieren, bevor Sie sie vergleichen können. Sie können dieses Beispiel mit der Art und Weise vergleichen, wie Java vorher vergleicht, und Sie werden feststellen, dass es so aufregend ist.
Beispiel 5 So überprüfen Sie nach doppelten Ereignissen in Java 8, sagen Sie Geburtstag
In Java gibt es eine weitere praktische Aufgabe in Bezug auf Uhrzeit und Datum, bei der doppelte Veranstaltungen wie monatliche Abrechnungs Tage, Hochzeitstag, monatliche Rückzahlungstage oder der Tag, an dem Sie jedes Jahr Versicherungsprämien zahlen, überprüfen sollen. Wenn Sie in einem E-Commerce-Unternehmen arbeiten, wird es auf jeden Fall ein Modul geben, das den Benutzern Geburtstagswünsche sendet und ihnen in jedem wichtigen Urlaub, wie Weihnachten und Thanksgiving, Grüße senden wird, und in Indien kann es das Deepawali-Festival sein. Wie kann ich feststellen, ob es sich um ein Festival oder ein doppelter Ereignis in Java handelt? Verwenden Sie die Monatsklasse. Diese Klasse besteht aus Monat und Tag und enthält keine Jahresinformationen. Dies bedeutet, dass Sie sie verwenden können, um einige Tage zu repräsentieren, die jedes Jahr wiederholt erscheinen. Natürlich gibt es einige andere Kombinationen, wie die Klasse des Jahresmonth. Es ist auch unveränderlich und fadensicher wie andere Klassen in der neuen Zeit- und Datumsbibliothek und auch eine Wertklasse. Lassen Sie uns ein Beispiel verwenden, um zu sehen, wie Sie mit Monatstag ein doppeltes Datum überprüfen können:
LocalDate Datum vonBirth = localDate.of (2010, 01, 14); Mononayday birthday = mononday Monattags currentmonthday = mononayday.from (heute); if (currentMonthday.equals (Geburtstag)) {System.out.println ("Viele, viele glückliche Rückkehr des Tages !!"); } else {System.out.println ("Entschuldigung, heute ist nicht dein Geburtstag"); } Ausgabe: Viele, viele glückliche Rückkehr des Tages !!Obwohl die Jahre unterschiedlich sind, ist heute der Geburtstag, also werden Sie einen Geburtstagswunsch in der Ausgabe sehen. Sie können die Systemzeit anpassen und das Programm ausführen, um festzustellen, ob es Sie erinnert, wenn Ihr nächster Geburtstag ist. Sie können auch versuchen, einen Junit Unit -Test mit Ihrem nächsten Geburtstag zu schreiben, um festzustellen, ob der Code korrekt ausgeführt werden kann.
Beispiel 6 So erhalten Sie die aktuelle Zeit in Java 8
Dies ist sehr ähnlich zu dem aktuellen Datum im ersten Beispiel. Dieses Mal verwenden wir eine Klasse namens LocalTime, die eine Zeit ohne Datum ist und ein enger Verwandter zu LocalDate ist. Hier können Sie jetzt auch die statische Fabrikmethode verwenden (), um die aktuelle Zeit zu erhalten. Das Standardformat lautet HH: MM: SS: NNN, wobei NNN Nanosekunden ist. Sie können es mit der aktuellen Zeit in Java 8 vergleichen.
LocalTime Time = LocalTime.Now (); System.out.println ("Lokalzeit jetzt:" + Zeit); Ausgabe lokaler Zeit jetzt: 16: 33: 33.369 // in Stunde, Minuten, Sekunden, Nano -SekundenWie Sie sehen können, enthält die aktuelle Zeit keine Daten, da die Lokalzeit nur Zeit und keine Daten hat.
Beispiel 7 So erhöhen Sie die Anzahl der Stunden in der Zeit
Oft müssen wir Stunden, Minuten oder Sekunden hinzufügen, um die zukünftige Zeit zu berechnen. Java 8 bietet nicht nur unveränderliche und fadensichere Klassen, sondern bietet auch einige bequemere Methoden wie PluShours (), um die ursprüngliche add () -Methode zu ersetzen. Übrigens geben diese Methoden einen Verweis auf eine neue lokale Zeitinstanz zurück, da die lokale Zeit unveränderlich ist. Vergessen Sie nicht, diese neue Referenz zu speichern.
LocalTime Time = LocalTime.Now (); LocalTime Newtime = Time.pluShours (2); // Hinzufügen von zwei Stunden system.out.println ("Zeit nach 2 Stunden:" + Newtime); Ausgabe: Zeit nach 2 Stunden: 18: 33: 33,369Sie können sehen, dass die aktuelle Zeit nach 2 Stunden 16: 33: 33,369 beträgt. Jetzt können Sie es mit der alten Methode zum Hinzufügen oder Abnahme von Stunden in Java vergleichen. Sie können erkennen, welche Methode auf den ersten Blick besser ist.
Beispiel 8 So erhalten Sie nach 1 Woche ein Datum
Dies ähnelt dem vorherigen Beispiel, um die Zeit nach 2 Stunden zu bekommen. Hier lernen wir, wie Sie das Datum nach 1 Woche erhalten. LocalDate wird verwendet, um Daten ohne Zeit darzustellen. Es hat eine plus () -Methode, mit der Tag, Woche oder Monat hinzugefügt werden kann, und Chronounit wird verwendet, um diese Zeiteinheit darzustellen. Da LocalDate ebenfalls unveränderlich ist, gibt jeder Änderungsvorgang eine neue Instanz zurück. Vergessen Sie also nicht, sie zu speichern.
LocalDate Nextweek = Today.plus (1, Chronounit.Weeks); System.out.println ("Heute ist:" + heute); System.out.println ("Datum nach 1 Woche:" + nächste Woche); Ausgabe: Heute ist: 2014-01-14date nach 1 Woche: 2014-01-21Sie können sehen, wie das Datum in 7 Tagen sein wird, das heißt eine Woche. Sie können diese Methode verwenden, um ein Monat, ein Jahr, eine Stunde, Minute oder sogar zehn Jahre hinzuzufügen, um die Chronounit -Klasse in der Java -API zu überprüfen, um weitere Optionen zu erhalten.
Beispiel 9 Datum etwa ein Jahr
Dies ist eine Fortsetzung des vorherigen Beispiels. Im obigen Beispiel haben wir gelernt, wie man die Plus () -Methode von LocalDate verwendet, um ein Datum, eine Woche oder einen Monat zu einem Datum hinzuzufügen. Lassen Sie uns nun lernen, wie Sie die minus () -Methode verwenden, um den Tag vor einem Jahr zu finden.
LocalDate Pothyear = Today.minus (1, chronounit.years); System.out.println ("Datum vor 1 Jahr:" + vorheriger Jahr); Localdate nextyear = heute.plus (1, Jahre); System.out.println ("Datum nach 1 Jahr:" + nextyear); Ausgabe: Datum vor 1 Jahr: 2013-01-14date nach 1 Jahr: 2015-01-14Es ist zu sehen, dass es jetzt zwei Jahre, eine im Jahr 2013, die andere im Jahr 2015 und die Jahre 2014 gibt.
Beispiel 10 Verwenden der Uhr in Java 8
Java 8 wird mit einer Uhrklasse geliefert, mit der Sie die aktuelle Zeit, Datum oder Uhrzeit in einer bestimmten Zeitzone erhalten können. Sie können mit Clock das System ersetzen.
// Gibt die aktuelle Zeit basierend auf Ihrer Systemuhr zurück und auf UTC eingestellt. Clock clock = clock.SystemUtc (); System.out.println ("Uhr:" + Uhr); // gibt die Zeit basierend auf der System Taktzone Clock DefaultClock = Clock.SystemDefaultZone (); System.out.println ("Uhr:" + Uhr); Ausgabe: Uhr: Systemclock [Z] Uhr: Systemclock [Z]Sie können diese Uhr mit dem angegebenen Datum vergleichen, z. B.:
öffentliche Klasse Myclass {private Uhr Uhr; // Abhängigkeitsinjektion ... public void prozess (localDate eventDate) {if (eventDate.isbefore (localDate.now (Uhr)) {...}}}Dies ist ziemlich bequem, wenn Sie Daten in verschiedenen Zeitzonen verarbeiten müssen.
Beispiel 11 So bestimmen Sie, ob ein Datum vor oder nach einem anderen Datum in Java liegt
Dies ist auch eine häufige Aufgabe in den tatsächlichen Projekten. Wie stellen Sie fest, ob ein Datum vor oder nach einem anderen Datum oder genau gleich ist? In Java 8 hat die LocalDate -Klasse eine isbefore ()- und isafter () -Methode, mit der zwei Daten verglichen werden können. Wenn das Datum des Aufrufens der Methode früher als das angegebene Datum ist, gibt die Methode isbefore () true zurück.
LocalDate morgen = localDate.of (2014, 1, 15); , if (tommorow.isafter (heute)) {System.out.println ("morgen kommt nach heute"); } LocalDate gestern = heute.minus (1, Tage); if (gestern } Ausgabe: Morgen kommt nach heute gestern, ist Tag zuvor heute istEs ist ersichtlich, dass das Datum in Java 8 recht einfach ist. Es besteht keine Notwendigkeit, eine andere Klasse wie Kalender zu verwenden, um ähnliche Aufgaben zu erledigen.
Beispiel 12 Umgang mit verschiedenen Zeitzonen in Java 8
Java 8 trennt nicht nur Daten und Zeiten, sondern hat auch eine Zeitzone. Es gibt jetzt mehrere Sätze von Zeitzonenklassen. Zum Beispiel stellt Zonid eine bestimmte Zeitzone dar, während ZonedDatetime die Zeit mit der Zeitzone darstellt. Es entspricht der Gregoriancalendar -Klasse vor Java 8. Mit dieser Klasse können Sie die lokale Zeit in die entsprechende Zeit in einer anderen Zeitzone umwandeln, z. B. das folgende Beispiel:
// Datum und Uhrzeit mit TimeZone in Java 8 ZoneId America = zoneId.of ("America/new_york"); LocalDatetime localTDateAndTime = localDatetime.now (); ZonedDatetime dateindtimeInNeWYork = zonedDatetime.of (LocalTDateAndTime, Amerika); System.out.println ("Aktuelles Datum und Uhrzeit in einer bestimmten Zeitzone:" + DATEANDTimeInNewYork); Ausgabe: Aktuelles Datum und Uhrzeit in einer bestimmten Zeitzone: 2014-01-14T16: 33: 33.373-05: 00 [America/New_york] Sie können es mit der vorherigen Methode zur Konvertierung der lokalen Zeit in die GMT -Zeit vergleichen. Machen Sie den Text, der der Zeitzone entspricht, übrigens, wie vor Java 8, ansonsten nicht zu einer solchen Ausnahme:
Ausnahme in Thread "Haupt" java.time.zone.zonerulesexception: Unbekannte Zeitzone-ID: Asien/Tokio bei Java.Time.zone.zonerulesProvider.getProvider (Zonerulesprovider.java:272) bei java.time.zone.ZoneRulesProvider.getRules(ZoneRulesProvider.java:227) at java.time.ZoneRegion.ofId(ZoneRegion.java:120) at java.time.ZoneId.of(ZoneId.java:403) at java.time.ZoneId.of(ZoneId.java:351)
Beispiel 13 Wie man einen festen Datum darstellt, z. B. Ablaufzeit für Kreditkarten
So wie der Monat einen wiederkehrenden Tag darstellt, ist ein Jahrmonat eine weitere Kombination, die Daten wie Kreditkartenrückzahlungsdatum, Datum der Festzahlung und Fälligkeitsdatum der Optionen darstellt. Sie können diese Klasse verwenden, um herauszufinden, wie viele Tage es in diesem Monat gibt. Die Länge von Month () zurückgibt, wie viele Tage es in diesem Jahrmonth -Instanz gibt. Dies ist sehr nützlich, um zu überprüfen, ob Februar 28 oder 29 Tage beträgt.
Jahrmonth Currentyearmonton = Jahrmonth.Now (); System.out.printf ("Tage im Monat Jahr %S: %d %n", CurrentYearmonth, CurrentYearmonth.LengthOfMonth ()); Jahrmonth CreditCardexpiry = Jahrmonth.of (2018, Monat.February); System.out.printf ("Ihre Kreditkarte ist auf %s %n", CreditCdexpiry); Ausgabe: Tage im Monat Jahr 2014-01: 31 Your Credit Card läuft am 2018-02 abBeispiel 14 Wie man das Schaltjahr in Java 8 überprüft
Dies ist nicht kompliziert. Die LocalDate -Klasse verfügt über eine Isleapyear () -Methode, mit der das Jahr, das dem aktuellen LocalDate entspricht, ein Schaltjahr ist. Wenn Sie das Rad immer noch neu erstellen möchten, können Sie sich diesen Code ansehen. Dies ist die Logik der Beurteilung, ob ein Jahr nur ein Schaltjahr ist, das nur in Java geschrieben wurde.
if (heute } else {System.out.println ("2014 ist kein Schaltjahr"); } Ausgabe: 2014 ist kein SchaltjahrSie können noch einige Jahre überprüfen, um festzustellen, ob die Ergebnisse korrekt sind. Es ist am besten, einen Unit -Test zu schreiben, um das normale Jahr und das Sprungjahr zu testen.
Beispiel 15 Wie viele Tage und Monate sind zwischen zwei Daten enthalten
Eine weitere häufige Aufgabe besteht darin, zu berechnen, wie viele Tage, Wochen oder Jahre zwischen zwei angegebenen Daten enthalten sind. Sie können die Klasse java.time.period verwenden, um diese Funktion zu erfüllen. Im folgenden Beispiel werden wir berechnen, wie viele Monate das aktuelle Datum von einem zukünftigen Datum getrennt ist.
Localdate java8release = localDate.of (2014, Monat.March, 14); PeriodInalTonextjavarEasease = Periode. System.out.println ("Monate zwischen heute und Java 8 veröffentlicht:" + PeriodTonextjavarelease.getmonths ()); Ausgabe: Monate zwischen heute und Java 8 Release: 2Wie Sie sehen können, ist dieser Monat Januar und der Veröffentlichungsdatum von Java 8 ist März, so dass 2 Monate zwischen ihnen liegen.
Beispiel 16 Datum und Uhrzeit mit Zeitzonenversatz
In Java 8 können Sie die ZoneOffset -Klasse verwenden, um eine bestimmte Zeitzone darzustellen, z. Solange Sie diesen Offset erhalten, können Sie LocalDatetime und diesen Offset verwenden, um eine OffsetDatetime zu erstellen.
LocalDatetime DateTime = localDateTime.of (2014, Monat. Januar, 14, 19, 30); ZoneOffset offset = zoneOffset.of ("+05:30"); OffSetDatetime Datum = OffSetDatetime.of (DateTime, Offset); System.out.println ("Datum und Uhrzeit mit TimeZone-Offset in Java: 2014-01-14t19: 30+05: 30Sie können sehen, dass die aktuelle Zeit und das aktuelle Datum mit der Zeitzone zusammenhängen. Ein weiterer Punkt ist, dass OffsetDatetime hauptsächlich für Maschinen zu verstehen ist. Wenn Menschen sehen, können Sie die Zonedatetime -Klasse verwenden.
Beispiel 17 Wie man den aktuellen Zeitstempel in Java 8 bekommt
Wenn Sie sich noch daran erinnern, wie Sie den aktuellen Zeitstempel vor Java 8 erhalten, ist es jetzt ein Kinderspiel. Die Instant -Klasse hat jetzt eine statische Fabrikmethode (), die den aktuellen Zeitstempel wie folgt zurückgeben kann:
Sofortiger timestamp = Instant.now (); System.out.println ("Was ist Wert dieses Augenblicks" + Zeitstempel); Ausgabe: Was ist Wert dieses Augenblicks 2014-01-14T08: 33: 33.379zEs ist ersichtlich, dass der aktuelle Zeitstempel Datum und Uhrzeit enthält, was Java.util.date sehr ähnlich ist. Tatsächlich ist Instant das Datum vor Java 8. Sie können die Methoden in diesen beiden Klassen verwenden, um zwischen diesen beiden Typen umzuwandeln. Zum Beispiel wird Datum.From (Instant) verwendet, um den sofortigen Umwandeln in Java.util.date und Datum.Toinstant () konvertiert Datum in Instant.
Beispiel 18 wie man mithilfe eines vordefinierten Formaters in Java 8 analysiert/Formatdaten analysiert
Vor Java 8 war die Zeit- und Datumsformatierung ein technischer Job. Unser guter Partner SimpleDateFormat ist nicht mit Thread-Safe und erscheint etwas sperrig, wenn es als lokale Variable für Format verwendet wird. Dank Thread-lokaler Variablen macht es dies in einer Umgebung mit mehreren Threads funktionsfähig, aber Java hat diesen Zustand lange Zeit beibehalten. Diesmal wird ein brandneues Thread-Safe-Datum und -datum eingebracht. Es enthält auch einige vordefinierte Formatter, einschließlich der häufig verwendeten Datumsformate. In diesem Beispiel verwenden wir beispielsweise das vordefinierte Basicisodat -Format, das am 14. Februar 2014 bis 20140114 formatiert wird.
String DayafterTommorrow = "20140116"; LocalDate formated = localDate.parse (DayafterTommorrow, datetimeFormatter.basic_iso_date); System.out.printf ("Datum aus String %S ist %s %n", Dayaftertommorrow, formatiert); Ausgabe: Datum, das aus String 20140116 generiert wird, ist 2014-01-16Sie können sehen, dass das generierte Datum dem Wert der angegebenen Zeichenfolge übereinstimmt, was bedeutet, dass das Datumsformat geringfügig unterschiedlich ist.
Beispiel 19 So verwenden Sie ein benutzerdefiniertes Formatierer, um Daten in Java zu analysieren
Im obigen Beispiel haben wir die integrierte Zeitdatierungsformaterin verwendet, um die Datumszeichenfolge zu analysieren. Natürlich ist das vordefinierte Formatierer in der Tat gut, aber manchmal müssen Sie möglicherweise noch ein benutzerdefiniertes Datumsformat verwenden. Zu diesem Zeitpunkt müssen Sie selbst eine benutzerdefinierte Datum -Formatierungs -Instanz erstellen. Das Datumsformat im folgenden Beispiel ist "Mmm dd yyyy". Sie können jedes Muster an die statische Methode der DateTimeFormatter übergeben, die eine Instanz zurückgibt, wobei der wörtliche Wert dieses Musters wie im vorherigen Beispiel übereinstimmt. Zum Beispiel repräsentiert M immer noch den Monat, während M immer noch das Segment ist. Ein ungültiger Modus wirft eine Ausnahme von DateTimeParseException aus, aber wenn es sich um einen logischen Fehler handelt, z.
String Goodfriday = "18. April 2014"; try {DateTimeFormatter Formatter = DateTimeFormatter.ofPattern ("mmm dd yyyy"); LocalDate Holiday = LocalDate.Parse (Goodfriday, Formatierer); System.out.printf ("erfolgreich analyse String %S, Datum %S %n", Goodfriday, Holiday); } catch (datetimeParseException ex) {System.out.printf ("%S ist nicht parserbar!%n", Goodfriday); ex.printstacktrace (); } Ausgabe: erfolgreich analysierte String 18. April 2014 ist das Datum 2014-04-18Sie können sehen, dass der Wert des Datums mit der in übergebenen Zeichenfolge übereinstimmt, das Format jedoch unterschiedlich ist.
Beispiel 20, wie Sie Daten formatieren und in Java 8 in Saiten umwandeln
In den beiden vorherigen Beispielen, obwohl wir die DateTimeFormatter -Klasse verwendet haben, analysieren wir hauptsächlich die Datumszeichenfolge. In diesem Beispiel werden wir das Gegenteil tun. Hier haben wir eine Instanz der LocalDatetime -Klasse, die wir in eine formatierte Datumszeichenfolge konvertieren möchten. Dies ist bei weitem die einfachste und bequemste Möglichkeit, Daten in Java in Saiten umzuwandeln. Das folgende Beispiel gibt eine formatierte Zeichenfolge zurück. Das gleiche wie beim vorherigen Beispiel ist, dass wir weiterhin die angegebene Musterzeichenfolge verwenden müssen, um eine Instanz der DateTimeFormatter -Klasse zu erstellen, aber der Anruf ist nicht die Analysemethode der LocalDate -Klasse, sondern die Format () -Methode. Diese Methode gibt eine Zeichenfolge zurück, die das aktuelle Datum darstellt, und das entsprechende Muster ist in der eingehenden DateTimeFormatter -Instanz definiert.
LocalDatetime avivalbaldate = localDateTime.now (); try {DateTimeFormatter format = datetimeFormatter.ofPattern ("mmm dd yyyy hh: mm a"); String Landing = avrivalDate.format (Format); System.out.printf ("Ankunft bei: %s %n", Landung); } catch (datetimeexception ex) {System.out.printf ("%s kann nicht formatiert werden!%n", avivalvalDate); ex.printstacktrace (); } Ausgabe: Ankunft unter: 14. Januar 2014 16:33 UhrEs ist ersichtlich, dass die aktuelle Zeit durch das angegebene "mmm dd yyyy hh: mm a" -Muster dargestellt wird, das den von drei Buchstaben dargestellten Monat und die von AM und PM dargestellte Zeit enthält.
Mehrere wichtige Punkte der Datum und der Uhrzeit API in Java 8
Nachdem Sie diese Beispiele gelesen haben, glaube ich, dass Sie ein gewisses Verständnis der neuen Zeit- und Datums -API von Java 8 haben. Lassen Sie uns nun einige Schlüsselelemente zu dieser neuen API überprüfen.
1. Es liefert javax.time.zoneid, um Zeitzonen zu verarbeiten.
2. Es bietet LocalDate- und Lokalzeitklassen
3.. Alle Klassen in der neuen Zeit- und Datums-API in Java 8 sind unveränderlich und fadensicher, was genau das Gegenteil des vorherigen Datums und der Kalender-API ist. Schlüsselklassen wie java.util.date und SimpleDateFormat sind nicht mit Thread-Safe.
V. Sie basieren alle auf dem ISO -Kalendersystem.
5. Jeder Java -Entwickler sollte mindestens diese fünf Klassen in dieser neuen API kennen:
6. Das Hauptpaket dieser Bibliothek ist Java.Time, das Klassen enthält, die Datum, Uhrzeit, Instant und Dauer darstellen. Es verfügt über zwei Unterpackungen, eine ist java.time.foramt, was offensichtlich ist, wofür dies verwendet wird, und der andere ist Java.Time.temporal, was aus einer niedrigeren Ebene auf verschiedene Felder zugreifen kann.
7. Zeitzone bezieht sich auf die Region auf der Erde, die die gleiche Standardzeit hat. Jede Zeitzone verfügt über eine eindeutige Kennung, und es gibt auch ein Region/Stadt -Format (Asien/Tokio) und eine Offset -Zeit ab Greenwich. Zum Beispiel beträgt die Offset -Zeit in Tokio +09: 00.
8. Die OffsetDatetime -Klasse enthält tatsächlich localDatetime und zoneOffset. Es wird verwendet, um ein komplettes Datum (Jahr, Monat, Tag) und Uhrzeit (Stunde, Minute, Nanosekunde) mit dem Greenwich Time-Offset (+/- Stunde: Minute, Minute, Nanosekunde) darzustellen.
9. Die DateTimeFormatter -Klasse wird verwendet, um Daten in Java zu formatieren und zu analysieren. Im Gegensatz zu SimpledateFormat ist es unveränderlich und fadensicher und kann bei Bedarf einer statischen Variablen zugeordnet werden. Die DateTimeFormatter -Klasse bietet viele vordefinierte Formatters und Sie können auch das gewünschte Format anpassen. Nach der Konvention gibt es natürlich auch eine Parse () -Methode, mit der die Zeichenfolge in ein Datum konvertiert werden. Wenn während der Konvertierung Fehler vorliegt, wird eine Ausnahme von DateTimeParseException ausgelöst. In ähnlicher Weise hat die DateFormatter -Klasse auch eine Format () -Methode für Formatierungsdaten. Wenn es fehlschlägt, wird eine DateTimeException ausgeworfen.
10. Anders ausgedrückt, die beiden Datumsformate von "Mmm D Yyyy" und "Mmm Dd Yyyy" sind ebenfalls etwas anders. Ersteres kann die beiden Saiten "2. Januar 2014" und "14. Januar 2014" erkennen, und letzteres wird einen Fehler melden, wenn der "2. Januar 2014" übertragen wird, da es erwartet, dass die beiden Zeichen im Monat übertragen werden. Um dieses Problem zu lösen, müssen Sie beispielsweise "2. Januar 2014" auf "02. Januar 2014" geändert werden, um dieses Problem zu lösen, wenn der Tag einstellig ist.
Das dreht sich alles um Java 8, die neue Zeit- und Datums -API. Diese kurzen Beispiele reichen aus, um einige der neuen Klassen in dieser neuen API zu verstehen. Da es auf der Grundlage der tatsächlichen Aufgaben erklärt wird, müssen Sie bei der Arbeit in Java Zeit und Datum bearbeiten, wenn Sie in Java begegnen, müssen Sie nicht mehr suchen. Wir haben gelernt, wie man Datumsinstanzen erstellt und verändert. Wir haben auch die Unterschiede zwischen reinen Daten, Datum plus Uhrzeit, Datum plus Zeitzonen kennengelernt, wissen, wie man zwei Daten vergleichen und wie man einen bestimmten Tag mit einem bestimmten Datum findet, z. B. den nächsten Geburtstag, Jubiläum oder Versicherungsdatum. Wir haben auch gelernt, wie man in Java 8 auf Thread-Safe-Weise analysiert und formatiert, ohne Thread-lokale Variablen oder Bibliotheken von Drittanbietern zu verwenden. Die neue API ist für jede Zeit- und Datumsaufgaben kompetent.