java Date实现转成LocalDate和LocalTime,LocalDateTime

 更新时间:2026年05月16日 16:34:07   作者:一直到老到直一  
本文介绍了Java中的Date与LocalDate、LocalTime、LocalDateTime之间的转换方法,使用Instant作为中间桥梁,并强调了时区的重要性,文中提供了示例代码,帮助读者更好地理解和应用这些API

在Java中,java.util.Date 代表了自“the epoch”(即1970年1月1日 00:00:00 GMT)以来的毫秒数。而java.time包(Java 8及以后版本)中的LocalDateLocalTimeLocalDateTime则提供了更为丰富和直观的日期时间API。

要将java.util.Date转换为LocalDateLocalTimeLocalDateTime,可以使用java.time.Instant类作为中间桥梁,因为Instant类可以表示时间线上的一个瞬时点,与java.util.Date有相似的用途(尽管Instant是以UTC表示的,而Date是相对于默认时区的)。

Date 转 LocalDate

import java.util.Date;  
import java.time.LocalDate;  
import java.time.Instant;  
import java.time.ZoneId;  
  
public class DateToLocalDate {  
    public static void main(String[] args) {  
        Date date = new Date(); // 获取当前日期时间  
  
        // 转换为Instant  
        Instant instant = date.toInstant();  
  
        // 转换为LocalDate,需要指定时区,因为LocalDate不包含时区信息  
        // 这里使用系统默认时区  
        LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();  
  
        System.out.println("LocalDate: " + localDate);  
    }  
}

Date 转 LocalTime

import java.util.Date;  
import java.time.LocalTime;  
import java.time.Instant;  
import java.time.ZoneId;  
  
public class DateToLocalTime {  
    public static void main(String[] args) {  
        Date date = new Date(); // 获取当前日期时间  
  
        // 转换为Instant  
        Instant instant = date.toInstant();  
  
        // 转换为LocalTime,需要指定时区  
        LocalTime localTime = instant.atZone(ZoneId.systemDefault()).toLocalTime();  
  
        System.out.println("LocalTime: " + localTime);  
    }  
}

Date 转 LocalDateTime

import java.util.Date;  
import java.time.LocalDateTime;  
import java.time.Instant;  
import java.time.ZoneId;  
  
public class DateToLocalDateTime {  
    public static void main(String[] args) {  
        Date date = new Date(); // 获取当前日期时间  
  
        // 转换为Instant  
        Instant instant = date.toInstant();  
  
        // 转换为LocalDateTime,需要指定时区  
        LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();  
  
        System.out.println("LocalDateTime: " + localDateTime);  
    }  
}

在上述示例中,首先将java.util.Date对象转换为java.time.Instant,然后通过atZone(ZoneId.systemDefault())方法将其转换为特定时区(这里是系统默认时区)的ZonedDateTime对象。由于LocalDateLocalTimeLocalDateTime都是时区无关的(对于LocalDateTime来说,它实际上是“本地”的,不包含时区信息,但在这里通过指定时区来从Instant获取它),最后通过调用.toLocalDate().toLocalTime().toLocalDateTime()方法将它们从ZonedDateTime中提取出来。

注意:

在转换过程中,需要指定一个时区,因为java.util.Date本身并不包含时区信息,它只是自epoch以来的毫秒数。因此,在转换为LocalDateLocalTimeLocalDateTime时,需要明确想要哪个时区的日期或时间。

如果想要的是UTC时间,你可以使用ZoneId.of("UTC")代替ZoneId.systemDefault()

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解JUC并发编程中的进程与线程学习

    详解JUC并发编程中的进程与线程学习

    这篇文章主要为大家详细介绍了JUC并发编程中的进程与线程学习,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • SpringBoot使用Docx4j实现DOCX转PDF功能

    SpringBoot使用Docx4j实现DOCX转PDF功能

    在当今的企业级应用中,文档格式转换是一个高频但又容易被低估的需求,从合同签署、报表生成到知识库管理,DOCX转PDF的需求无处不在,今天我们就介绍一款使用纯Java实现 DOCX 转 PDF的方案,超级简单,简直不要太爽,需要的朋友可以参考下
    2026-02-02
  • IntelliJ IDEA语法报错

    IntelliJ IDEA语法报错"Usage of API documented as @since 1.6+"的解决

    今天小编就为大家分享一篇关于IntelliJ IDEA语法报错"Usage of API documented as @since 1.6+"的解决办法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Java中的多种文件上传方式总结

    Java中的多种文件上传方式总结

    这篇文章主要介绍了Java中的多种文件上传方式总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • IDEA连接MySQL提示serverTimezone的问题及解决方法

    IDEA连接MySQL提示serverTimezone的问题及解决方法

    很多朋友私聊小编,使用IDEA软件连接MySQL数据库时总是提示Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.的错误,小编就不一一回复大家了,下面小编把我的解决方法分享到脚本之家平台,需要的朋友参考下吧
    2021-05-05
  • idea创建springboot项目和springcloud项目的详细教程

    idea创建springboot项目和springcloud项目的详细教程

    这篇文章主要介绍了idea创建springboot项目和springcloud项目方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Java中ThreadLocal的使用及原理详解

    Java中ThreadLocal的使用及原理详解

    这篇文章主要介绍了Java中ThreadLocal的使用及原理详解,ThreadLocal是JDK提供的,提供线程本地变量,主要用来存放线程独有变量和解决参数传递问题的,需要的朋友可以参考下
    2023-09-09
  • Spring Security实现添加图片验证功能

    Spring Security实现添加图片验证功能

    这篇文章主要为大家介绍了Spring Security实现添加图片验证功能详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Java调用C++程序的实现方式

    Java调用C++程序的实现方式

    这篇文章主要介绍了Java调用C++程序的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • java异常级别与捕获的示例代码

    java异常级别与捕获的示例代码

    本次模拟一个异常实例,验证一下异常的捕获,通过实例代码给大家解析java异常级别与捕获的操作方法,感兴趣的朋友跟随小编一起看看吧
    2021-07-07

最新评论