Java 8 - Comment convertir une chaîne en LocalDate
Peu d'exemples Java vous montrent comment convertir une chaîne en la nouvelle API de date Java 8 -java.time.LocalDate
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d/MM/yyyy");
String date = "16/08/2016";
//convert String to LocalDate
LocalDate localDate = LocalDate.parse(date, formatter);
Note
Reportez-vous à ce JavaDoc officiel deDateTimeFormatter pour plus d'exemples de formateurs de date et d'heure.
Note
Vous pouvez vous intéresser à cet exemple classique dejava.util.Date -How to convert String to
Date in Java
1. Chaîne = 16/08/2016
Si la chaîne est formatée commeISO_LOCAL_DATE, vous pouvez analyser la chaîne directement, pas besoin de conversion.
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);
}
}
Sortie
2016-08-16
2. String = 16-août-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));
}
}
Sortie
2016-08-16 16-Aug-2016
3. Chaîne = 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));
}
}
Sortie
2016-08-16 16/08/2016
4. String = Tue, 16 août 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));
}
}
Sortie
2016-08-16 Tue, Aug 16 2016
5. String = mardi 16 août 2016 12:10:56
Cet exemple convertit une chaîne enjava.time.LocalDateTime
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));
}
}
Sortie
2016-08-16T12:10:56 Tuesday, Aug 16, 2016 12:10:56 PM
6. Chaîne = 2016-08-16T15: 23: 01Z
Le suffixe «Z» signifie UTC, vous pouvez convertir directement enjava.time.instant, puis l'afficher avec un fuseau horaire.
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);
}
}
Sortie
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. Chaîne = 2016-08-16T10: 15: 30 + 08: 00
Chaîne → 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);
}
}
Sortie
ZonedDateTime : 2016-08-16T10:15:30+08:00 TimeZone : +08:00 LocalDate : 2016-08-16