Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Java Grundkurs 3: Generische Programmierung, Datenströme, Datumsrechnung

Einführung in die DateTime API

Testen Sie unsere 2015 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Mit diesem Video erhalten Sie eine Einführung in die DateTimeAPI. Dabei zeigt Ihnen der Trainer, wie Sie mit den Klassen LocalDate, LocalTime und LocalDateTime arbeiten.

Transkript

In diesem Video stelle ich Ihnen die Date Time API vor, die seit Java 8 die Standard-Funktionalität für die Berechnung von Datum und Zeit darstellt. Wir legen also gleich los und legen das Geburtsjahr von der Programmiersprache mal als Objekt fest. Und ja, die Klassen, die wir finden sich im Package java.time zumindest hauptsächlich. Ich könnte das Paket mal importieren, und dann könnten wir uns umschauen, was uns hierfür zur Verfügung steht. Und hier könnte man sich jetzt wundern, dass es hierfür gleich mehrere Klassen gibt. Nämlich um ein Datum ganz unabhängig von der Uhrzeit zu definieren, könnten wir die Klasse LocalDate verwenden. YearMonth könnte sich eventuell auch eignen oder auch MonthDay oder auch Year. Ich muss mir also erstmal darüber Gedanken machen, welche Angaben für meinen Anwendungsfall erforderlich sind und dann erst die entsprechende Klasse hierzu raussuchen. Da ich den Geburtstag mit Tag Monat und Jahr festlegen möchte, entscheide ich mich für die Klasse LocalDate. Ich importiere also die Klasse LocalDate und deklariere hiermit eine Variable. Die Variable nenne ich mal auch localDate. Dass die Date Time API zur Festlegung eines Datums ganz unterschiedliche Klassen anbietet, ist ja eigentlich ganz verständlich. Denn wir Menschen legen ein Datum und auch eine Uhrzeit ganz unterschiedlich fest. Denn je nachdem, ob wir nun eine Uhrzeit, einen Zeitstempel, ein Jahr oder ein Geburtstag als Zeitpunkt festlegen möchten, drücken wir uns ganz unterschiedlich aus, weil wir auch in der Granularität ganz unterschiedliches meinen. Und deshalb bietet Date Time API auch ganz unterschiedliche Klassen an. Und hier zeigt sich bereits, dass die Java Expert Group bei der Date Time API, die ja erst mit Java 8 veröffentlicht wurde, sehr sorgfältig gearbeitet hat. Man hat sich vorab viele Gedanken gemacht, was Zeit eigentlich ist und wie man sie als Benutzerschnittstelle anbieten kann. Der wichtigste Gedanke hierbei war, dass man darin unterschieden hat, ob man einen Zeitpunkt im Menschen lesbaren Format oder im Maschinen Format vorliegen hat. Die englischen Fachbegriffe lauten hierfür Human Time und Machine Time. Intern arbeitet Java aber natürlich immer mit der Machine Time, denn ansonsten käme der Computer ja ganz durcheinander. Aber das braucht uns nicht zu kümmern, da die Umwandlung von Human Time zu Machine Time und umgekehrt automatisch im Verborgenen stattfindet. Die Klassen, die für die Festlegung per Human Time bereitstehen, werden auch als temporale Datentypen bezeichnet. Beispielsweise handelt es sich bei der Klasse LocalDate um einen temporalen Datentyp, da wir das Datum mit einem Jahr und einem Monat und einem Tag festlegen können. Dabei wird unsere Angabe gemäß dem Gregorianischen Kalender nach ISO8601 interpretiert und dies entspricht dem Verfahren, das weltweit am weitesten verbreitet ist. So und nun werden wir uns mal der Variablen Local Date mal ein Objekt des Typs LocalDate zuweisen. Zunächst mal brauche ich den Zuweisung Operator. Allerdings ist hierbei etwas außergewöhnlich, denn man würde ja vielleight erwarten, dass LocalDate einen Konstruktor und Zeta Methoden hierzu anbietet. Aber der interne Wert der Date Time Klassen ist unveränderbar. Also der Fachbegriff lautet Immutable. Daher existiert so etwas nicht. Stattdessen verfügen die Date Time Klassen über spezielle Methoden, deren Namen in der Date Time API weitestgehend konsistent wiedergefunden werden können. Und diese Methoden liefern dann stehst einen Zeitpunkt in der gewünschten Form. Durch diesen Wiedererkennungseffekt, gewöhnt man sich schnell an die Methoden Namen. Beispielsweise bietet die Klasse Local Date unterschiedliche Klassen-Methoden, mit denen sich das Datum generieren lässt. Dies kann ich Ihnen zeigen, indem ich die Klasse LocalDate mal hinschreibe und dann den Punkt Operator hinzufüge. Hier sehen Sie also die Klassen-Methoden mit den Namen from, now, of, ofEpochDay, ofYearDay und parse. Und ich verwende mal die Klassenmethode auf, um das Geburtsdatum von Java als LocalDate Objekt zu erhalten. Java 1.0, damals noch unter dem Namen Oak, wurde am 23. Januar 1996 erstmalig veröffentlicht. Dieses Datum legen wir also ganz unabhängig von seiner Zeitzone als LocalDate fest. Als erstes setze ich das Jahr 1996, dann den Monat, das ist der Januar, also eine 1 und dann kommt der Tag und das ist eine 23. Die Methode of wird mir hiermit ein Objekt des Typs LocalDate liefern. Darüber hinaus wurde noch eine weitere Variante der Of Methode zur Verfügung gestellt, bei der statt einem Int Wert ein Objekt der neuen Klasse Month übergeben wird, sodass der Aufruf der Methode nun wirklich sehr eindeutig aussagt, was hiermit geliefert werden soll. Ich kann also statt der 1 Month aufrufen und den Punkt Operator setzen und dort JANUARY raussuchen. Obwohl mir die Uhrzeit, wann Java tatsächlich veröffentlich wurde nicht bekannt ist, werde ich dies Mal zusätzlich festlegen. Hierfür wird mir die temporale Klasse LocalTime angeboten. Die Handhabe der Klasse LocalTime ist sehr ähnlich, wie die bei der Klasse localDate. Mit folgender Anweisung deklariere ich zunächst eine Variable des Typs localTime. Und die Variable nenne ich localTime und dieser Variablen Weise ich ein Objekt des Typs localTime zu. Ich gehe mal davon aus, dass die Veröffentlichung Vormittags um 10:30 Uhr stattfand. Also schreibe ich LocalTime. und auch hier werden mir unterschiedliche Klassen-Methoden zur Festsetzung der Zeit angeboten. Und hier wähle ich wieder Of mit Stunde, Minute, Sekunde und setze mit der 10 die Stunde 10:30 Uhr und null Sekunden. Kommen wir noch zu der Klasse LocalDatetime. Die Klasse LocalDatetime kombiniert beides. Sie enthält also sowohl ein Datum, als auch eine Uhrzeit. Ich erstelle also zunächst eine Variable des Typs Local DateTime. Die Variable nenne ich localDateTime. So und jetzt möchte ich der Variablen ein Objekt des Typs LocalDateTime zuweisen. Und zwar ist es so, dass intern bei der Klasse LocalDateTime sich zwei befinden. Die eine ist vom Typ LocalDate und die andere ist vom Typ LocalTime. Deshalb bietet die Klasse LocalDateTime auch eine Of Methode an, bei dem wir ein LocalDate und ein LocalTime als Übergabe Parameter setzen können. Ich kann also LocalDateTime aufrufen, dann den Punkt Operator setzen und dann über die Methode of diesen Konstruktor hier auswählen, bei dem ich dann zum einen die Variable LocalDate übergebe und zum anderen die Variable LocalTime. Alternativ stehe mir auch andere Of Methoden zur Verfügung, mit denen ich auch die int Werte für das LocalDate und das LocalTime setzen kann. In diesem Fall erzeugt die Klasse LocalDateTime dann intern ein Objekt des Typs LocalDate und LocalTime und weist sie den internen LocalDate und LocalTime Objekt Variabln zu. Für die Ausgabe stehen mir nun unterschiedliche Möglichkeiten zur Verfügung. Ich kann also ein System.Out.Println programmieren und dort localDateTime aufrufen und könnte dort über die unterschiedlichen get Methoden mir den Tag, die Stunde, die Minute, den Monat, das Jahr und so weiter holen. Alles das würde funktionieren. Ich werde allerdings einen Formatierer einsetzen, denn um die Uhrzeit und ein Datum formatiert auszugeben, bietet die DateTimeAPI einen eigenen Formatierer mit dem Namen DateTime Formatter an. Den werde ich jetzt mal verwenden. Zunächst deklariere ich also eine Variable des Typs DateTimeFormatter. Die Variable nenne ich formatter. Und dann lege ich die Datumsangabe mit Hilfe eines Musters an, das der DateTimeFormatter als Schablone für die Formatierung nutzen wird. Hierfür rufe ich die Klassenmethode Of Pattern der Klasse DateTimeFormatter auf. So und jetzt kann ich ein Muster festlegen. Zunächst brauche ich den Tag, den lege ich mit einem kleinen d fest. Dann setze ich noch einen Punkt. Das große D würde den Tag des Jahres ausgeben und das kleine d setzt den Tag des Monats. Dann brauche ich den Monat. Hierfür setze ich vier große MMMM ein, damit mir der Monat ausgeschrieben wird. Für das Jahr verwende ich yyyy und dann werde ich das Wort um einbauen. Also weil alle Buchstaben für die Gestaltung des Musters reserviert sind, muss ich das um in Hochkommata reinsetzen, so. Und dann brauche ich auch noch die Stunde. HH werden die Stunde von 0 bis 24 berücksichtigen. Dann setze ich auch noch die Minuten mit mm und abschließend füge ich das Wort Uhr hinzu. Und nun bietet mir die Klasse LocalDateTime eine Methode an, die sich format nennt. Und der kann ich den formatter einfach übergeben. Und das Ergebnis gebe ich mir einmal aus. Und dann sehen Sie hier den 23. Januar 1996. In diesem Video habe ich Ihnen die DateTimeAPI vorgestellt, die seit Java 8 die Standardfunktionalität für die Berechnung von Datum und Zeit darstellt. Dabei habe ich Ihnen erklärt, dass die DateTimeAPI zwischen der Human Time und der Machine Time unterscheidet. Während für uns Menschen die Human Time gebräuchlich ist, rechnet ein Computer mit der Machine Time. Dementsprechend bietet Java für beide Zwecke unterschiedliche Klassen und Methoden an. Darüber hinaus bestehen unterschiedliche Klassen für die Festlegung mit der Human Time, da wir Menschen hierbei ganz unterschiedliche Aspekte berücksichtigen und uns unterschiedlich granular ausdrücken. Abschließend habe ich Ihnen auch noch gezeigt, wie Sie das Datum und die Uhrzeit mit Hilfe der Klasse DateTimeFormatter formatieren können.

Java Grundkurs 3: Generische Programmierung, Datenströme, Datumsrechnung

Steigen Sie tiefer in die Java-Programierung ein und lernen Sie den Umgang mit generischen Typen, Lamda-Ausdrücken, DAtenströmen und mit Datums- und Zeitberechnung.

5 Std. 24 min (47 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:09.10.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!