Java中LocalDate,LocalDateTime,Date,日期串相互转换

 更新时间:2026年02月08日 09:43:47   作者:_杨瀚博  
本文主要介绍了Java中LocalDate,LocalDateTime,Date,日期串相互转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1. 获取当前时间 XXX.now()

public void testCurrentDate() {
  LocalDate curLocalDate = LocalDate.now();
  System.out.println("地心侠士: "+curLocalDate.toString());
  LocalTime curLoacalTime = LocalTime.now();
  System.out.println("地心侠士: "+curLoacalTime.toString());
  LocalDateTime curLocalDateTime = LocalDateTime.now();
  System.out.println("地心侠士: "+curLocalDateTime.toString());
  Instant curInstant = Instant.now();
  System.out.println("地心侠士: "+ curInstant.toString());
}

输出结果

地心侠士: 2026-02-04
地心侠士: 17:15:59.715639800
地心侠士: 2026-02-04T17:15:59.715639800
地心侠士: 2026-02-04T09:15:59.715639800Z

说明:

  • LocalDate,LocalTime,LocalDateTime都是当前时区对应日期或时间
  • Instant获取到的是UTC+0 日期和时间
  • Z 代表零时区(UTC+0) T 日期和时间的分割符

2. 时间戳转成LocalDateTime

public void testTimestamp() {
  Long timeStamp = 1769577638767L;
  Instant instant = Instant.ofEpochMilli(timeStamp);
  System.out.println("地心侠士: " + instant.toString());
  LocalDateTime cvLocalDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
  System.out.println("地心侠士: " + cvLocalDate.toString());
  LocalDateTime localDateT1 = LocalDateTime.ofEpochSecond(timeStamp / 1000, 0, ZoneOffset.ofHours(8));
  System.out.println("地心侠士: " + localDateT1.toString());
}

输出结果

地心侠士: 2026-01-28T05:20:38.767Z
地心侠士: 2026-01-28T13:20:38.767
地心侠士: 2026-01-28T13:20:38

说明:

  • 使用方法 LocalDateTime.ofInstant 或者 LocalDateTime.ofEpochSecond
  • 使用 ofInstant ,毫秒时间戳可以直接使用
  • 使用 ofEpochSecond ,毫秒时间戳需要除以1000
  • ofInstant 使用 ZoneId.systemDefault() 获取当时区
  • OfEpochSecond 使用 ZoneOffset.ofHours(8) 指定需要的时区
  • ZoneId.systemDefault() 当前时区,等同的有 ZoneId.of("Asia/Shanghai") ZoneId.of("GMT+8") ZoneId.of("UTC+08:00") ZoneId.of("+08:00")

3. 时间串转换成LocalDateTime

public void testDateStr() {
  DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
  String dateStr = "2026-01-28 18:20:38.767";
  LocalDateTime localDateTime = LocalDateTime.parse(dateStr, df);
  System.out.println("地心侠士: " + localDateTime.toString());
  LocalDateTime defaultParse = LocalDateTime.parse("2026-01-28T18:20:38");
  System.out.println("地心侠士: " + defaultParse.toString());
  DateTimeFormatterBuilder dfBuild = new DateTimeFormatterBuilder();
  DateTimeFormatter dynmicDf = dfBuild.appendPattern("yyyy-MM-dd")
  		.optionalStart()
  		.appendLiteral(' ')
  		.optionalEnd()
  		.optionalStart()
  		.appendLiteral('T')
  		.optionalEnd()
  		.appendPattern("HH:mm:ss")
  		.toFormatter();
  LocalDateTime dynamic1 = LocalDateTime.parse("2026-01-28T18:20:38", dynmicDf);
  System.out.println("地心侠士: " + dynamic1.toString());
  LocalDateTime dynamc2 = LocalDateTime.parse("2026-01-28 18:20:38", dynmicDf);
  System.out.println("地心侠士: " + dynamc2.toString());
}

输出结果:

地心侠士: 2026-01-28T18:20:38.767
地心侠士: 2026-01-28T18:20:38
地心侠士: 2026-01-28T18:20:38
地心侠士: 2026-01-28T18:20:38

说明:

  • 使用方法LocalDateTime.parse结合DateTimeFormatter转换
  • 默认转换格式为yyyy-MM-ddTHH:mm:ss
  • 使用 DateTimeFormatterBuilder 可以实现多种日期串转换成LocalDateTime

4. LocalDateTime转换成成LocalDate和Date

public void testDateConvert() {
  LocalDateTime dt = LocalDateTime.now();
  System.out.println("地心侠士 " + dt.toString());
  System.out.println("LocalDateTime=>LocalDate");
  LocalDate localDate = dt.toLocalDate();
  System.out.println("地心侠士 " + localDate.toString());
  System.out.println("LocalDateTime=>Date");
  Instant instant = dt.toInstant(ZoneOffset.ofHours(8));
  Date d = Date.from(instant);
  System.out.println("地心侠士 " + d);
}

输出结果:

地心侠士 2026-02-06T19:09:35.092605300
LocalDateTime=>LocalDate
地心侠士 2026-02-06
LocalDateTime=>Date
地心侠士 Fri Feb 06 19:09:35 CST 2026

5. Date 转换成LocalDateTime

public void testDateConvert2() {
  Date date = new Date();
  System.out.println("地心侠士 " + date.toString());
  System.out.println("Date=>LocalDateTime");
  Instant instant = date.toInstant();
  LocalDateTime lcd = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
  System.out.println("地心侠士 " + lcd.toString());
}

输出结果:

地心侠士 Fri Feb 06 19:15:38 CST 2026
Date=>LocalDateTime
地心侠士 2026-02-06T19:15:38.122

6. 北京时间时区表示

public void testZone() {
  ZoneId zonidGMT8 = ZoneId.of("GMT+8");
  LocalDateTime gmt8 = LocalDateTime.ofInstant(Instant.now(), zonidGMT8);
  System.out.println("地心侠士: " + gmt8.toString());
  ZoneId zonidAS = ZoneId.of("Asia/Shanghai");
  LocalDateTime as = LocalDateTime.ofInstant(Instant.now(), zonidAS);
  System.out.println("地心侠士: " + as.toString());
  ZoneId zonidUTC8 = ZoneId.of("UTC+08:00");
  LocalDateTime utc = LocalDateTime.ofInstant(Instant.now(), zonidUTC8);
  System.out.println("地心侠士: " + utc.toString());
  ZoneId zonid8 = ZoneId.of("+08:00");
  LocalDateTime ad8= LocalDateTime.ofInstant(Instant.now(), zonid8);
  System.out.println("地心侠士: " + ad8.toString());
}

输出结果:

地心侠士: 2026-02-06T18:35:26.921795200
地心侠士: 2026-02-06T18:35:26.928776600
地心侠士: 2026-02-06T18:35:26.928776600
地心侠士: 2026-02-06T18:35:26.928776600

到此这篇关于Java中LocalDate,LocalDateTime,Date,日期串相互转换的文章就介绍到这了,更多相关Java LocalDate,LocalDateTime,Date转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java8新特性之默认方法和静态方法

    Java8新特性之默认方法和静态方法

    这篇文章主要给大家介绍了关于Java8新特性之默认方法和静态方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Java redis使用场景介绍

    Java redis使用场景介绍

    Redis是一个完全开源、遵守 BSD 协议、简单的、高效的、分布式的、基于内存的k-v数据库,本篇文章带你了解它的使用场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • java 后端生成pdf模板合并单元格表格的案例

    java 后端生成pdf模板合并单元格表格的案例

    这篇文章主要介绍了java 后端生成pdf模板合并单元格表格的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • java正则表达式判断 ip 地址是否正确解析

    java正则表达式判断 ip 地址是否正确解析

    这篇文章主要介绍了java正则表达式判断 ip 地址是否正确解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • JAVA图片水印开发案例详解

    JAVA图片水印开发案例详解

    水印开发是web开发中一种比较常见的功能,实现的代码很简单,这篇文章主要介绍了JAVA图片水印开发案例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 浅谈Java中ThreadLocal引发的内存泄漏

    浅谈Java中ThreadLocal引发的内存泄漏

    本文主要介绍了浅谈Java中ThreadLocal引发的内存泄漏,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Java必须学会的类的继承与多态

    Java必须学会的类的继承与多态

    这篇文章主要介绍了Java类的继承与多态的相关资料,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-08-08
  • SpringBoot小程序推送信息的项目实践

    SpringBoot小程序推送信息的项目实践

    本文主要介绍了SpringBoot小程序推送信息的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 基于SpringBoot整合oauth2实现token认证

    基于SpringBoot整合oauth2实现token认证

    这篇文章主要介绍了基于SpringBoot整合oauth2实现token 认证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • java 中模拟UDP传输的发送端和接收端实例详解

    java 中模拟UDP传输的发送端和接收端实例详解

    这篇文章主要介绍了java 中模拟UDP传输的发送端和接收端实例详解的相关资料,需要的朋友可以参考下
    2017-03-03

最新评论