LocalDateTime、LocalDate、LocalTime与Date之间的转换与格式化

本文介绍了Java 8中LocalDateTime、LocalDate和LocalTime类与旧Date类的不同,展示了日期格式化的传统方式与新API的对比,并详细讲解了它们之间的转换方法。重点在于新API的使用和优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两者概述

相同点

LocalDateTime、LocalDate、LocalTime这三个其实都是相同的东西,只是各种职能不一样而已。它们与Date类一样都是表示时间

不同点

  1. jdk8之前表示时间只能是Date或者Calendar等。
  2. jdk8时官方给出了新的时间API,正是LocalDateTime、LocalDate、LocalTime等。
  3. 官方也渐渐的淘汰Date中大多数API都处于即将失效。(至于为什么要推出新的,大家都懂。每种新东西的出现必然有它的优越)
    Date类

Date的格式化

上才艺

Date date = new Date();
//格式化格式,自定义
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//Date------>>String
String dateStr = sdf.format(date);
System.out.println(dateStr);
//String------>>Date
Date parse = sdf.parse("2020-01-01 12:56:59");
System.out.println(parse);

/*
输出结果:
2021-04-29 01:46:07
Wed Jan 01 12:56:59 CST 2020
*/

LocalDateTime、LocalDate、LocalTime格式化

就是玩👇

//LocalDateTime、LocalDate、LocalTime 等类的格式化,类似于SimpleDateFormat
DateTimeFormatter dtf =DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
//将时间转换成字符串
String format = dtf.format(LocalDateTime.now());
log.info("(LocalDateTime——String)---------->>" + format);
//将字符串转换成时间
TemporalAccessor parse = dtf.parse("2021-02-04 13:56");
log.info("(LTemporalAccessor的显示)---------->>" + parse);
LocalDateTime ldt = LocalDateTime.from(parse);
log.info("(String——LocalDateTime)---------->>" + ldt);

//log.info()  我使用的是@Slf4j,和System.out.println();差不多,不用在意
/*
输出结果:
01:49:17.022 [main] INFO com.example.CommonTest - (LocalDateTime——String)---------->>2021-04-29 01:49
01:49:17.028 [main] INFO com.example.CommonTest - (LTemporalAccessor的显示)---------->>{},ISO resolved to 2021-02-04T13:56
01:49:17.031 [main] INFO com.example.CommonTest - (String——LocalDateTime)---------->>2021-02-04T13:56
*/

LocalDateTime与Date之间的转换

重头戏

//Date------>>LocalDateTime
Date date = new Date();
Instant instant = date.toInstant();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
//LocalDateTime------>>Date
LocalDateTime ldt = LocalDateTime.now();
Instant in = ldt.toInstant(ZoneOffset.of("+8"));
Date date1 = Date.from(in);

到这就结束了哦!看到这的都不是一般人。
还行就留下赞吧!我们一起成长。(有啥问题可以留言哦!一起讨论,我也学习学习)。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值