java DateTime 和date 转换
时间: 2024-09-19 20:11:38 浏览: 35
在Java中,`java.util.Date`和`java.time.LocalDate`、`java.time.LocalDateTime`等是处理日期和时间的不同类。`Date`是一个古老的类,通常用于表示自1970年1月1日(UTC/GMT)以来的毫秒数。而新的`java.time`包中的类如`LocalDate`和`LocalDateTime`更现代化,它们分别代表日期和日期时间。
转换通常涉及以下几个步骤:
1. **从`Date`到`LocalDate`**:
如果你想将`Date`转换为`LocalDate`,你可以这样做:
```java
Date date = ...;
LocalDate localDate = LocalDate.ofInstant(date.toInstant(), ZoneId.systemDefault());
```
2. **从`LocalDate`到`Date`**:
这种转换不太直接,因为`LocalDate`没有对应的时间信息。如果你想包含时间信息,需要先转换为`LocalDateTime`,再转换回`Date`:
```java
LocalDate localDate = ...;
LocalDateTime dateTime = LocalDateTime.of(localDate, LocalTime.now(ZoneId.systemDefault()));
Date date = dateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
```
3. **从`LocalDateTime` to `java.sql.Timestamp`** (如果你需要数据库兼容的日期时间):
```java
LocalDateTime dateTime = ...;
Timestamp sqlTimestamp = Timestamp.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());
```
4. **反之亦然**:
可以通过相似的逻辑反向操作。
阅读全文