一.簡述
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