Để chuyển đổi một Date
chủ đề LocalDate
hoặc LocalDateTime
và ngược lại trong Java, bạn có thể sử dụng java.time
gói được giới thiệu trong Java 8. Dưới đây là hướng dẫn chi tiết về cách thực hiện các chuyển đổi này:
1. Chuyển đổi Date
ĐẾN LocalDate
sử dụng Instant
Và ZoneId
:
- Đầu tiên, chuyển đổi
Date
đến mộtInstant
. - Sau đó, sử dụng
Instant
để tạo ra mộtLocalDate
với mong muốnZoneId
.
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
public class DateToLocalDate {
public static void main(String[] args) {
Date date = new Date(); // current date
Instant instant = date.toInstant();
LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println("Date: " + date);
System.out.println("LocalDate: " + localDate);
}
}
2. Chuyển đổi LocalDate
ĐẾN Date
sử dụng ZoneId
Và Instant
:
- Chuyển đổi
LocalDate
đến mộtZonedDateTime
với mong muốnZoneId
. - Sau đó, chuyển đổi
ZonedDateTime
đến mộtInstant
và sử dụng nó để tạo ra mộtDate
.
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
public class LocalDateToDate {
public static void main(String[] args) {
LocalDate localDate = LocalDate.now(); // current date
ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
Date date = Date.from(zonedDateTime.toInstant());
System.out.println("LocalDate: " + localDate);
System.out.println("Date: " + date);
}
}
3. Chuyển đổi Date
ĐẾN LocalDateTime
sử dụng Instant
Và ZoneId
:
- Đầu tiên, chuyển đổi
Date
đến mộtInstant
. - Sau đó, sử dụng
Instant
để tạo ra mộtLocalDateTime
với mong muốnZoneId
.
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
public class DateToLocalDateTime {
public static void main(String[] args) {
Date date = new Date(); // current date
Instant instant = date.toInstant();
LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println("Date: " + date);
System.out.println("LocalDateTime: " + localDateTime);
}
}
4. Chuyển đổi LocalDateTime
ĐẾN Date
sử dụng ZoneId
Và Instant
:
- Chuyển đổi
LocalDateTime
đến mộtZonedDateTime
với mong muốnZoneId
. - Sau đó, chuyển đổi
ZonedDateTime
đến mộtInstant
và sử dụng nó để tạo ra mộtDate
.
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
public class LocalDateTimeToDate {
public static void main(String[] args) {
LocalDateTime localDateTime = LocalDateTime.now(); // current date and time
ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault());
Date date = Date.from(zonedDateTime.toInstant());
System.out.println("LocalDateTime: " + localDateTime);
System.out.println("Date: " + date);
}
}
5. Tóm tắt
- Từ
Date
ĐẾNLocalDate
hoặcLocalDateTime
:- Chuyển thành
Date
ĐẾNInstant
. - Sử dụng
Instant
vớiZoneId
để tạo raLocalDate
hoặcLocalDateTime
.
- Chuyển thành
- Từ
LocalDate
hoặcLocalDateTime
ĐẾNDate
:- Sử dụng
ZoneId
để tạo raZonedDateTime
. - Chuyển thành
ZonedDateTime
ĐẾNInstant
. - Sử dụng
Instant
để tạo raDate
.
- Sử dụng
Các phương pháp này đảm bảo rằng các chuyển đổi tôn trọng múi giờ và duy trì thông tin ngày và giờ chính xác.