Java 8 - Wie konvertiert man String in LocalDate?

Java 8 - So konvertieren Sie einen String in LocalDate

Einige Java-Beispiele zeigen Ihnen, wie Sie einen String in die neue Java 8-Datums-API -java.time.LocalDate konvertieren

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d/MM/yyyy");

    String date = "16/08/2016";

    //convert String to LocalDate
    LocalDate localDate = LocalDate.parse(date, formatter);

Note
Weitere Beispiele für Formatierer von Datum und Uhrzeit finden Sie in diesem offiziellen JavaDoc vonDateTimeFormatter.

Note
Sie könnten sich für dieses klassische Beispiel vonjava.util.Dateinteressieren -How to convert String to Date in Java

1. String = 2016-08-16

Wenn der String wieISO_LOCAL_DATE formatiert ist, können Sie den String direkt analysieren, ohne dass eine Konvertierung erforderlich ist.

TestNewDate1.java

package com.example.java8.date;

import java.time.LocalDate;

public class TestNewDate1 {

    public static void main(String[] argv) {

        String date = "2016-08-16";

        //default, ISO_LOCAL_DATE
        LocalDate localDate = LocalDate.parse(date);

        System.out.println(localDate);

    }

}

Ausgabe

2016-08-16

2. Zeichenfolge = 16.08.2016

TestNewDate2.java

package com.example.java8.date;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class TestNewDate2 {

    public static void main(String[] argv) {

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d-MMM-yyyy");

        String date = "16-Aug-2016";

        LocalDate localDate = LocalDate.parse(date, formatter);

        System.out.println(localDate);  //default, print ISO_LOCAL_DATE

        System.out.println(formatter.format(localDate));

    }

}

Ausgabe

2016-08-16
16-Aug-2016

3. String = 16/08/2016

TestNewDate3.java

package com.example.java8.date;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class TestNewDate3 {

    public static void main(String[] argv) {

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d/MM/yyyy");

        String date = "16/08/2016";

        LocalDate localDate = LocalDate.parse(date, formatter);

        System.out.println(localDate);

        System.out.println(formatter.format(localDate));

    }

}

Ausgabe

2016-08-16
16/08/2016

4. String = Di, 16. August 2016

TestNewDate4.java

package com.example.java8.date;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class TestNewDate4 {

    public static void main(String[] argv) {

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("E, MMM d yyyy");

        String date = "Tue, Aug 16 2016";

        LocalDate localDate = LocalDate.parse(date, formatter);

        System.out.println(localDate);

        System.out.println(formatter.format(localDate));

    }

}

Ausgabe

2016-08-16
Tue, Aug 16 2016

5. Zeichenfolge = Dienstag, 16. August 2016, 12:10:56 Uhr

In diesem Beispiel wird ein String injava.time.LocalDateTime konvertiert

TestNewDate5.java

package com.example.java8.date;

package com.example.pageview;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class TestNewDate5 {

    public static void main(String[] argv) {

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE, MMM d, yyyy HH:mm:ss a");

        String date = "Tuesday, Aug 16, 2016 12:10:56 PM";

        LocalDateTime localDateTime = LocalDateTime.parse(date, formatter);

        System.out.println(localDateTime);

        System.out.println(formatter.format(localDateTime));

    }

}

Ausgabe

2016-08-16T12:10:56
Tuesday, Aug 16, 2016 12:10:56 PM

6. String = 2016-08-16T15: 23: 01Z

Das Suffix "Z" bedeutet UTC. Sie können direkt injava.time.instant konvertieren und es dann mit einer Zeitzone anzeigen.

TestNewDate6.java

package com.example.java8.date;

import java.time.*;

public class TestNewDate6 {

    public static void main(String[] argv) {

        String dateInString = "2016-08-16T15:23:01Z";

        Instant instant = Instant.parse(dateInString);

        System.out.println("Instant : " + instant);

        //get date time only
        LocalDateTime result = LocalDateTime.ofInstant(instant, ZoneId.of(ZoneOffset.UTC.getId()));

        //get localdate
        System.out.println("LocalDate : " + result.toLocalDate());

        //get date time + timezone
        ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Asia/Tokyo"));
        System.out.println(zonedDateTime);

        //get date time + timezone
        ZonedDateTime zonedDateTime2 = instant.atZone(ZoneId.of("Europe/Athens"));
        System.out.println(zonedDateTime2);

    }

}

Ausgabe

Instant : 2016-08-16T15:23:01Z
LocalDate : 2016-08-16
2016-08-17T00:23:01+09:00[Asia/Tokyo]
2016-08-16T18:23:01+03:00[Europe/Athens]

7. String = 2016-08-16T10: 15: 30 + 08: 00

Zeichenfolge → ZonedDateTime → LocalDate

TestNewDate7.java

package com.example.java8.date;

import java.time.*;
import java.time.format.DateTimeFormatter;

public class TestNewDate7 {

    public static void main(String[] argv) {

        String date = "2016-08-16T10:15:30+08:00";

        ZonedDateTime result = ZonedDateTime.parse(date, DateTimeFormatter.ISO_DATE_TIME);

        System.out.println("ZonedDateTime : " + result);

        System.out.println("TimeZone : " + result.getZone());

        LocalDate localDate = result.toLocalDate();

        System.out.println("LocalDate : " + localDate);

    }

}

Ausgabe

ZonedDateTime : 2016-08-16T10:15:30+08:00
TimeZone : +08:00
LocalDate : 2016-08-16