Java 8 How to convert String to LocalDate

摘要: Few Java examples show you how to convert a String to the new Java 8 Date API – java.time.LocalDate

Few Java examples show you how to convert a String to the new 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);
Note
Refer to this official DateTimeFormatter JavaDoc for more date time formatter examples.
Note
You may interest at this classic java.util.Date example – How to convert String to Date in Java

1. String = 2016-08-16

If the String is formatted like ISO_LOCAL_DATE, you can parse the String directly, no need conversion.

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);

Output

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));

Output

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));

Output

2016-08-16
16/08/2016

4. String = Tue, Aug 16 2016

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));

Output

2016-08-16
Tue, Aug 16 2016

5. String = Tuesday, Aug 16, 2016 12:10:56 PM

This example convert a String to 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));

Output

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

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

The ‘Z’ suffix means UTC, you can convert into a java.time.instant directly, then display it with a time zone.

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);

Output

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

String -> 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);

Output

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

References

  1. DateTimeFormatter JavaDoc
  2. Classic SimpleDateFormat JavaDoc
  3. Java – How to convert String to Date
  4. Stackoverflow : simpledateformat parsing date with ‘Z’ literal
  5. Wikipedia : ISO 8601
  6. GMT VS UTC
  7. What is a Time Zone?

上一篇: Java Display all ZoneId and its UTC offset
下一篇: Java 8 How to sort a Map
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号