找回密码
 立即注册
首页 业界区 业界 LocalDate,LocalDateTime,Date,日期串相互转换

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

羊舌正清 2026-2-6 19:45:04
LocalDate,LocalDateTime,Date,日期串相互转换

1. 获取当前时间 XXX.now()
  1. public void testCurrentDate() {
  2.   LocalDate curLocalDate = LocalDate.now();
  3.   System.out.println("地心侠士: "+curLocalDate.toString());
  4.   LocalTime curLoacalTime = LocalTime.now();
  5.   System.out.println("地心侠士: "+curLoacalTime.toString());
  6.   LocalDateTime curLocalDateTime = LocalDateTime.now();
  7.   System.out.println("地心侠士: "+curLocalDateTime.toString());
  8.   Instant curInstant = Instant.now();
  9.   System.out.println("地心侠士: "+ curInstant.toString());
  10. }
复制代码
输出结果
  1. 地心侠士: 2026-02-04
  2. 地心侠士: 17:15:59.715639800
  3. 地心侠士: 2026-02-04T17:15:59.715639800
  4. 地心侠士: 2026-02-04T09:15:59.715639800Z
复制代码
说明:

  • LocalDate,LocalTime,LocalDateTime都是当前时区对应日期或时间
  • Instant获取到的是UTC+0 日期和时间
  • Z 代表零时区(UTC+0) T 日期和时间的分割符
2. 时间戳转成LocalDateTime
  1. public void testTimestamp() {
  2.   Long timeStamp = 1769577638767L;
  3.   Instant instant = Instant.ofEpochMilli(timeStamp);
  4.   System.out.println("地心侠士: " + instant.toString());
  5.   LocalDateTime cvLocalDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
  6.   System.out.println("地心侠士: " + cvLocalDate.toString());
  7.   LocalDateTime localDateT1 = LocalDateTime.ofEpochSecond(timeStamp / 1000, 0, ZoneOffset.ofHours(8));
  8.   System.out.println("地心侠士: " + localDateT1.toString());
  9. }
复制代码
输出结果
  1. 地心侠士: 2026-01-28T05:20:38.767Z
  2. 地心侠士: 2026-01-28T13:20:38.767
  3. 地心侠士: 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
  1. public void testDateStr() {
  2.   DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
  3.   String dateStr = "2026-01-28 18:20:38.767";
  4.   LocalDateTime localDateTime = LocalDateTime.parse(dateStr, df);
  5.   System.out.println("地心侠士: " + localDateTime.toString());
  6.   LocalDateTime defaultParse = LocalDateTime.parse("2026-01-28T18:20:38");
  7.   System.out.println("地心侠士: " + defaultParse.toString());
  8.   DateTimeFormatterBuilder dfBuild = new DateTimeFormatterBuilder();
  9.   DateTimeFormatter dynmicDf = dfBuild.appendPattern("yyyy-MM-dd")
  10.                   .optionalStart()
  11.                   .appendLiteral(' ')
  12.                   .optionalEnd()
  13.                   .optionalStart()
  14.                   .appendLiteral('T')
  15.                   .optionalEnd()
  16.                   .appendPattern("HH:mm:ss")
  17.                   .toFormatter();
  18.   LocalDateTime dynamic1 = LocalDateTime.parse("2026-01-28T18:20:38", dynmicDf);
  19.   System.out.println("地心侠士: " + dynamic1.toString());
  20.   LocalDateTime dynamc2 = LocalDateTime.parse("2026-01-28 18:20:38", dynmicDf);
  21.   System.out.println("地心侠士: " + dynamc2.toString());
  22. }
复制代码
输出结果:
  1. 地心侠士: 2026-01-28T18:20:38.767
  2. 地心侠士: 2026-01-28T18:20:38
  3. 地心侠士: 2026-01-28T18:20:38
  4. 地心侠士: 2026-01-28T18:20:38
复制代码
说明:

  • 使用方法LocalDateTime.parse结合DateTimeFormatter转换
  • 默认转换格式为yyyy-MM-ddTHH:mm:ss
  • 使用 DateTimeFormatterBuilder 可以实现多种日期串转换成LocalDateTime
4. LocalDateTime转换成成LocalDate和Date
  1. public void testDateConvert() {
  2.   LocalDateTime dt = LocalDateTime.now();
  3.   System.out.println("地心侠士 " + dt.toString());
  4.   System.out.println("LocalDateTime=>LocalDate");
  5.   LocalDate localDate = dt.toLocalDate();
  6.   System.out.println("地心侠士 " + localDate.toString());
  7.   System.out.println("LocalDateTime=>Date");
  8.   Instant instant = dt.toInstant(ZoneOffset.ofHours(8));
  9.   Date d = Date.from(instant);
  10.   System.out.println("地心侠士 " + d);
  11. }
复制代码
输出结果:
  1. 地心侠士 2026-02-06T19:09:35.092605300
  2. LocalDateTime=>LocalDate
  3. 地心侠士 2026-02-06
  4. LocalDateTime=>Date
  5. 地心侠士 Fri Feb 06 19:09:35 CST 2026
复制代码
5. Date 转换成LocalDateTime
  1. public void testDateConvert2() {
  2.   Date date = new Date();
  3.   System.out.println("地心侠士 " + date.toString());
  4.   System.out.println("Date=>LocalDateTime");
  5.   Instant instant = date.toInstant();
  6.   LocalDateTime lcd = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
  7.   System.out.println("地心侠士 " + lcd.toString());
  8. }
复制代码
输出结果:
  1. 地心侠士 Fri Feb 06 19:15:38 CST 2026
  2. Date=>LocalDateTime
  3. 地心侠士 2026-02-06T19:15:38.122
复制代码
6. 北京时间时区表示
  1. public void testZone() {
  2.   ZoneId zonidGMT8 = ZoneId.of("GMT+8");
  3.   LocalDateTime gmt8 = LocalDateTime.ofInstant(Instant.now(), zonidGMT8);
  4.   System.out.println("地心侠士: " + gmt8.toString());
  5.   ZoneId zonidAS = ZoneId.of("Asia/Shanghai");
  6.   LocalDateTime as = LocalDateTime.ofInstant(Instant.now(), zonidAS);
  7.   System.out.println("地心侠士: " + as.toString());
  8.   ZoneId zonidUTC8 = ZoneId.of("UTC+08:00");
  9.   LocalDateTime utc = LocalDateTime.ofInstant(Instant.now(), zonidUTC8);
  10.   System.out.println("地心侠士: " + utc.toString());
  11.   ZoneId zonid8 = ZoneId.of("+08:00");
  12.   LocalDateTime ad8= LocalDateTime.ofInstant(Instant.now(), zonid8);
  13.   System.out.println("地心侠士: " + ad8.toString());
  14. }
复制代码
输出结果:
  1. 地心侠士: 2026-02-06T18:35:26.921795200
  2. 地心侠士: 2026-02-06T18:35:26.928776600
  3. 地心侠士: 2026-02-06T18:35:26.928776600
  4. 地心侠士: 2026-02-06T18:35:26.928776600
复制代码
原文地址:https://mp.weixin.qq.com/s/vH0TJKl89CfV3ehvHllgNg

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

2026-2-12 11:22:58

举报

2026-2-13 23:56:29

举报

2026-2-24 09:57:05

举报

2026-2-25 01:57:16

举报

2026-2-25 12:32:21

举报

2026-3-10 22:18:33

举报

很好很强大  我过来先占个楼 待编辑
您需要登录后才可以回帖 登录 | 立即注册