Чтобы преобразовать Date
Возражать LocalDate
или LocalDateTime
и наоборот в Java вы можете использовать java.time
пакет, представленный в Java 8. Вот подробное руководство по выполнению этих преобразований:
1. Конвертация Date
к LocalDate
С использованием Instant
и ZoneId
:
- Сначала преобразуйте
Date
дляInstant
. - Затем используйте
Instant
создатьLocalDate
с желаемымZoneId
.
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. Конвертация LocalDate
к Date
С использованием ZoneId
и Instant
:
- Преобразуйте
LocalDate
кZonedDateTime
с желаемымZoneId
. - Затем преобразуйте
ZonedDateTime
дляInstant
и использовать его для созданияDate
.
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. Конвертация Date
к LocalDateTime
С использованием Instant
и ZoneId
:
- Сначала преобразуйте
Date
дляInstant
. - Затем используйте
Instant
создатьLocalDateTime
с желаемымZoneId
.
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. Конвертация LocalDateTime
к Date
С использованием ZoneId
и Instant
:
- Преобразуйте
LocalDateTime
кZonedDateTime
с желаемымZoneId
. - Затем преобразуйте
ZonedDateTime
дляInstant
и использовать его для созданияDate
.
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. Резюме
- От
Date
кLocalDate
илиLocalDateTime
:- Конвертировать
Date
кInstant
. - Использовать
Instant
сZoneId
создаватьLocalDate
илиLocalDateTime
.
- Конвертировать
- От
LocalDate
илиLocalDateTime
кDate
:- Использовать
ZoneId
создаватьZonedDateTime
. - Конвертировать
ZonedDateTime
кInstant
. - Использовать
Instant
создаватьDate
.
- Использовать
Эти методы гарантируют, что преобразования учитывают часовой пояс и сохраняют правильную информацию о дате и времени.