Java 8 - Как преобразовать String в LocalDate
Несколько примеров Java показывают, как преобразовать строку в новый API даты 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
Обратитесь к этому официальному JavaDocDateTimeFormatter для получения дополнительных примеров форматирования даты и времени.
Note
Вас может заинтересовать этот классический примерjava.util.Date
-How to convert String to
Date in Java
1. Строка = 16.08.2016
Если строка отформатирована какISO_LOCAL_DATE, вы можете анализировать строку напрямую, преобразование не требуется.
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); } }
Выход
2016-08-16
2. String = 16 августа 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)); } }
Выход
2016-08-16 16-Aug-2016
3. Строка = 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)); } }
Выход
2016-08-16 16/08/2016
4. String = Вт, 16 августа 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)); } }
Выход
2016-08-16 Tue, Aug 16 2016
5. Строка = вторник, 16 августа 2016 г., 12:10:56
В этом примере преобразование String вjava.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)); } }
Выход
2016-08-16T12:10:56 Tuesday, Aug 16, 2016 12:10:56 PM
6. Строка = 2016-08-16T15: 23: 01Z
Суффикс «Z» означает UTC, вы можете напрямую преобразовать вjava.time.instant
, а затем отобразить его с часовым поясом.
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); } }
Выход
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. Строка = 2016-08-16T10: 15: 30 + 08: 00
Строка → 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); } }
Выход
ZonedDateTime : 2016-08-16T10:15:30+08:00 TimeZone : +08:00 LocalDate : 2016-08-16