将 java.util.Date 转换为 java.time 的 Instant、OffsetDateTime 或 ZonedDateTime
随着我们向现代 java.time 框架迁移,了解如何将遗留 java.util.Date 对象转换为适当的 java.time 类型至关重要。以下是等效项的概述:
java.util.Date 到 Instant
两者都代表 UTC 中的时刻,因此转换很简单:
Instant instant = myUtilDate.toInstant();
java.util.Date myUtilDate = java.util.Date.from(instant);
java.util.Date 到 java.time 的 OffsetDateTime 或 ZonedDateTime
因为这些类型包含时区信息,从遗留日期中提取区域是必要的:
// If the legacy date is a GregorianCalendar (which can hold time zone info)
if (myUtilCalendar instanceof GregorianCalendar) {
GregorianCalendar gregCal = (GregorianCalendar) myUtilCalendar;
ZonedDateTime zdt = gregCal.toZonedDateTime(); // ZonedDateTime with time zone
java.util.Calendar myUtilCalendar = java.util.GregorianCalendar.from(zdt);
}
其他转换映射
旧类型 | java.time 等效 | 其他注释 |
---|---|---|
java.util.Calendar | 即时 | 转换为 UTC 日期的开始时间 |
java.util.GregorianCalendar | ZonedDateTime | 保留时区信息 |
java.util.LocalDate | ZonedDateTime | 需要时区来确定日期 |
java.util.LocalTime | 即时 | 转换为UTC 日期的开始 |
java.util.LocalDateTime | ZonedDateTime | 需要时区来确定日期和时间 |
重要注意事项
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3