OCAJP 8 – Java 8 Date Time API

Eine der neuen und bemerkenswerten Einführungen in der Java 8 Version ist ein Update der Date Time API. Seit der ersten Version der Java-Pakete gibt es keine Standard-API zur Berechnung der Datums- und Uhrzeitdaten. In den Vorgängerversionen gibt es zwei Pakete: java.util und java.sql, die die Datums- und Uhrzeit-API mit unterschiedlichen Funktionen definieren. Dies erschwert es den Entwicklern, zu verstehen, wann sie die geeigneten Klassen zum Bearbeiten von Datums- und Zeitdaten verwenden sollten. Java 8 stellt ein neues Paket vor java.time mit vielen Daten-Zeit-Klassen für die Datumsmanipulation. Dies würde die alten Klassen ersetzen.

Dieses Tutorial ist hilfreich für die Vorbereitung der Datums- und Uhrzeitkurse im Rahmen des OCAJP 8 Zertifizierungsprüfung. Ich habe alle in den Prüfungsthemen für die Datums- und Zeit-API genannten Kurse abgedeckt. Ziel der Zertifizierung ist „Kalenderdaten mit Klassen aus java.time.LocalDateTime?, java.time.LocalDate?, java.time.LocalTime?, java.time.format.DateTimeFormatter?, java.time.Period erstellen und bearbeiten“.

In diesem Tutorial werden die folgenden APIs anhand einfacher Beispiele erläutert.

  • java.time.LocalDate
  • java.time.LocalTime
  • java.time.LocalDateTime
  • java.time.Period
  • java.time.format.DateTimeFormatter
  • java.time.LocalDate

    Dies ist eine unveränderliche Klasse mit dem Standarddatumsformat JJJJ-MM-TT. Die von dieser Klasse bereitgestellte Funktionalität ähnelt der, die von der java.sql.Date-API bereitgestellt wird. java.util.Date stellt die Methode now() bereit, um das aktuelle Datum abzurufen. Beachten Sie, dass diese Methode über die überladene Version verfügt, um das aktuelle Datum in der spezifischen Zone abzurufen, indem die ZoneId als Argument an die Methode now() übergeben wird.

    Schauen wir uns ein Beispiel an:

    package javabeat.net;
    
    import java.time.LocalDate;
    import java.time.ZoneId;
    /**
     * LocalDate Examples
     * @author krishna (www.javabeat.net)
     *
     */
    public class LocalDateExample {
    	public static void main(String[] args) {
    		LocalDate localDateToday = LocalDate.now();
    		System.out.println("Today's Date : "+localDateToday);
    		LocalDate localDateZone = LocalDate.now(ZoneId.of("America/Los_Angeles"));
    		System.out.println("Today's Date at Zone America/Los_Angeles : "+localDateZone);
    	}
    }
    

    Ausgabe für das obige Programm:

    Today's Date : 2015-04-06
    Today's Date at Zone America/Los_Angeles : 2015-04-06
    

    java.time.LocalTime

    java.time.LocalTime Die Klasse ähnelt LocalDate und stellt eine für Menschen lesbare Zeit im Format hh:mm:ss.zzz bereit. Diese Klasse bietet auch die ZoneId-Unterstützung zum Abrufen der Zeit für die angegebene ZoneId.

    Schauen wir uns ein Beispiel für die LocalTime-Klasse an.

    package javabeat.net;
    
    import java.time.LocalTime;
    import java.time.ZoneId;
    
    /**
     * LocalTime Example
     * @author krishna (www.javabeat.net)
     *
     */
    public class LocalTimeExample {
    	public static void main(String[] args) {
    		LocalTime currentTime = LocalTime.now();
    		System.out.println("Current Time : " + currentTime);
    		LocalTime localTimeZone = LocalTime.now(ZoneId.of("America/Los_Angeles"));
    		System.out.println("Current Time at America/Los_Angeles : " + localTimeZone);
    	}
    }
    

    Ausgabe für das obige Programm:

    Current Time : 20:47:00.725
    Current Time at America/Los_Angeles : 08:17:00.729
    

    java.time.LocalDateTime

    LocalDateTime ist ein unveränderliches Objekt, das ein Datum und eine Uhrzeit darstellt. Das Standardformat für den Datum-Uhrzeit-Wert ist jjjj-MM-tt-HH-mm-ss.zzz. Die LocalDateTime-Klasse stellt eine Factory-Methode bereit, die die Argumente LocalDate und LocalTime verwendet, um eine LocalDateTime-Instanz zu erstellen.

    Schauen wir uns ein einfaches Beispiel an.

    package javabeat.net;
    
    import java.time.LocalDate;
    import java.time.LocalDateTime;
    import java.time.LocalTime;
    import java.time.ZoneId;
    
    public class LocalDateTimeExample {
    	public static void main(String[] args) {
    		LocalDateTime localDateTime = LocalDateTime.now();
    		System.out.println("Current Date Time : " + localDateTime);
    
    		LocalDateTime today = LocalDateTime.of(LocalDate.now(), LocalTime.now());
            System.out.println("Current DateTime="+today);
    
    		LocalDateTime localDateTimeZone = LocalDateTime.now(ZoneId.of("America/Los_Angeles"));
    		System.out.println("Current Date Time at America/Los_Angeles : " + localDateTimeZone);
    	}
    }
    

    Für das oben genannte Programm:

    Current Date Time : 2015-04-06T21:52:55.996
    Current DateTime=2015-04-06T21:52:55.997
    Current Date Time at America/Los_Angeles : 2015-04-06T09:22:56.004
    

    java.time.format.DateTimeFormatter

    Vor Java 8 bestand der Java-Standardansatz zum Formatieren von Datumsangaben in der Verwendung von DateFormat und SimpleDateFormat. Mit Java 8 werden die bevorzugten Datums-/Uhrzeitklassen nicht mehr im java.util-Paket verwaltet und die neuen Datums-/Uhrzeitverarbeitungsklassen sind Teil davon java.time Paket. Ebenso sind bevorzugte Datums-/Uhrzeitformatierungsklassen nicht mehr im enthalten java.text Paket und die neuen Formatierungsklassen sind in zu finden java.time.format Paket.

    Mit Java 8, DateTimeFormatter Die Klasse wird hauptsächlich zum Formatieren von Datums-/Uhrzeitdaten für Java-Anwendungen verwendet. Dieser Kurs ist auch Teil der OCAJP 8-Prüfungsthemen. Der DateTimeFormatter Die Klasse stellt ofPattern-Methoden bereit, um eine Instanz von bereitzustellen DateTimeFormatter basierend auf dem angegebenen Datums-/Uhrzeitmuster als String.

    Schauen wir uns ein einfaches Beispiel an.

    package javabeat.net;
    
    import java.time.ZonedDateTime;
    import java.time.format.DateTimeFormatter;
    
    public class DateTimeFormatterExample {
    	public static void main(String[] args) {
    		DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter
    				.ofPattern("yyyy/MM/dd HH:mm:ss z");
    		DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter
    				.ofPattern("yyyy/MM/dd");
    		DateTimeFormatter dateTimeFormatter3 = DateTimeFormatter
    				.ofPattern("dd/MMM/YYYY");
    		ZonedDateTime zonedDateTime = ZonedDateTime.now();
    		String formatter1 = dateTimeFormatter1.format(zonedDateTime);
    		String formatter2 = dateTimeFormatter2.format(zonedDateTime);
    		String formatter3 = dateTimeFormatter3.format(zonedDateTime);
    		System.out.println(formatter1);
    		System.out.println(formatter2);
    		System.out.println(formatter3);
    	}
    }
    

    Die Ausgabe für das obige Programm lautet:

    2015/04/07 07:14:51 IST
    2015/04/07
    07/Apr/2015
    

    java.time.Period

    Zeitraum gibt die Menge oder Zeitdauer in Jahren, Monaten und Tagen an. Wenn Sie den genauen Zeitraum zwischen zwei Daten ermitteln möchten, liefert Ihnen die Period-Klasse die Details mit den integrierten Methoden. Diese Klasse ist unveränderlich und Thread-sicher.

    Schauen wir uns ein einfaches Beispiel an, das zeigt, wie die Period-Klasse verwendet wird.

    package javabeat.net;
    
    import java.time.LocalDate;
    import java.time.Period;
    
    public class PeriodExample {
    	public static void main(String[] args) {
    		LocalDate localDate1 = LocalDate.of(2014, 03, 03);
    		LocalDate localDate2 = LocalDate.of(2015, 07, 01);
    		Period period = Period.between(localDate1, localDate2);
    		System.out
    				.println("03-March-2014 to 01-July-2015 :Years ("
    						+ period.getYears() + "), Months(" + period.getMonths()
    						+ "), Days(" + period.getDays() + ")");
    	}
    
    }
    

    Die Ausgabe für das obige Programm lautet:

    03-March-2014 to 01-July-2015 :Years (1), Months(3), Days(28)
    

    Beispiel-Scheinprüfungen – OCAJP 8 Datums-/Zeitklassen

    1. Welches der folgenden Pakete deklariert die Klasse DateTimeFormatter?

  • java.util
  • java.sql
  • java.lang
  • java.time.format
  • Richtige Antwort: 4. java.time.format

    Erläuterung: java.time.format ist das neue Paket, das in Java 8 zum Deklarieren der Datums-/Uhrzeitformatierungs-APIs eingeführt wurde. Die anderen in diesem Paket deklarierten Klassen sind DateTimeFormatterBuilder und DecimalStyle.

    2. Bitte wählen Sie die richtigen Klassennamen aus, die im Paket java.time deklariert sind.

  • Datum
  • Ortszeit
  • Zeitraum
  • Terminzeit
  • LocalDateTime
  • Richtige Antwort: 2,3 und 5 (LocalTime, Period und LocalDateTime)

    Erläuterung: Date ist im Paket java.util definiert und DateTime ist der falsche Klassenname.

    3. Lesen Sie die folgende Syntax und wählen Sie die richtige Option aus, die gültige Daten für „arg3“ enthält.

    LocalDate localDate = LocalDate.of(arg1, arg2, arg3);

  • Monat
  • Jahr
  • Tag
  • Die Syntax ist nicht korrekt
  • Richtige Antwort: 3. Tag

    Erläuterung: LocalDate.of(YEAR,MONTH,DAY) gibt das LocalDate-Objekt basierend auf den an diese Methode übergebenen Parametern zurück.

    Kommentar verfassen

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

    Nach oben scrollen