Java 8 – StringをLocalDateに変換する方法
いくつかのJavaの例では、Stringを新しいJava 8のDate APIに変換する方法を示します。 – 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);
1. String = 2016-08-16
文字列がhttps://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO
LOCAL
DATE[ISO
LOCAL
DATE]のようにフォーマットされている場合、変換は不要で、文字列を直接解析できます。
TestNewDate1.java
package com.mkyong.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-Aug-2016
TestNewDate2.java
package com.mkyong.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. String = 16/08/2016
TestNewDate3.java
package com.mkyong.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 = Tue、Aug 16 1616
TestNewDate4.java
package com.mkyong.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. String = 2016年8月16日12:10:56 PM
この例では、Stringを `java.time.LocalDateTime`に変換します。
TestNewDate5.java
package com.mkyong.java8.date; package com.mkyong.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. String = 2016-08-16T15:23:01Z
‘Z’接尾辞はUTCを意味し、 `java.time.instant`に直接変換してタイムゾーンで表示することができます。
TestNewDate6.java
package com.mkyong.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. String = 2016-08-16T10:15:30 08:00 文字列 - > ZonedDateTime - > LocalDate TestNewDate7.java
package com.mkyong.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
=== 参考文献 . https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html[DateTimeFormatter JavaDoc]。 http://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html[Classic SimpleDateFormat JavaDoc]。リンク://java/how-to-convert-string-to-date-java/[Java - 変換方法 文字列を日付]。 http://stackoverflow.com/questions/2580925/simpledateformat-parsing-date-with-z-literal[Stackoverflow : simpledateformat parsing date with ‘Z’ literal]. https://en.wikipedia.org/wiki/ISO__8601[Wikipedia : ISO 8601] . http://www.diffen.com/difference/GMT__vs__UTC[GMT VS UTC] . http://www.timeanddate.com/time/what-is-a-time-zone.html[Whatとは タイムゾーン?] リンク://タグ/変換/[変換]リンク://タグ/日付/[日付]link://タグ/日付形式/[日付形式]link://タグ/java8/[java8]link://tag/localdate/[localdate]link://タグ/タイムゾーン/[timezone]