Date和LocalDate互轉

一.簡述

Date對象表示特定的日期和時間,而LocalDate(Java8)對象只包含沒有任何時間信息的日期。
因此,如果我們只關心日期而不是時間信息,則可以在Date和LocalDate之間進行轉換。

二.Date轉LocalDate

如果要將Java.util.Date轉換爲java.time.LocalDate,可以使用以下步驟:

1)將java.util.Date轉換爲ZonedDateTime。
2)使用它的toLocalDate()方法從ZonedDateTime獲取LocalDate。

示例:

package insping;

import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;

public class Test {

    public static void main(String[] args) {
        Date date = new Date();
        Instant instant = date.toInstant();
        ZoneId zoneId = ZoneId.systemDefault();

        // atZone()方法返回在指定時區從此Instant生成的ZonedDateTime。
        LocalDate localDate = instant.atZone(zoneId).toLocalDate();
        System.out.println("Date = " + date);
        System.out.println("LocalDate = " + localDate);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

結果:

Date = Fri Jun 16 15:29:05 CST 2017
LocalDate = 2017-06-16

三.LocalDate轉Date

現在,如果要將LocalDate轉換回java.util.Date,可以使用以下步驟:

1)使用ZonedDateTime將LocalDate轉換爲Instant。
2)使用from()方法從Instant對象獲取Date的實例

示例:

package insping;

import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;

public class Test {

    public static void main(String[] args) {
        ZoneId zoneId = ZoneId.systemDefault();
        LocalDate localDate = LocalDate.now();
        ZonedDateTime zdt = localDate.atStartOfDay(zoneId);

        Date date = Date.from(zdt.toInstant());

        System.out.println("LocalDate = " + localDate);
        System.out.println("Date = " + date);

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

結果:

LocalDate = 2017-06-16
Date = Fri Jun 16 00:00:00 CST 2017
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章