LocalDateTime、LocalDate、LocalTime与Date之间的转换与格式化
两者概述
相同点
LocalDateTime、LocalDate、LocalTime这三个其实都是相同的东西,只是各种职能不一样而已。它们与Date类一样都是表示时间。
不同点
- jdk8之前表示时间只能是Date或者Calendar等。
- jdk8时官方给出了新的时间API,正是LocalDateTime、LocalDate、LocalTime等。
- 官方也渐渐的淘汰Date中大多数API都处于即将失效。(至于为什么要推出新的,大家都懂。每种新东西的出现必然有它的优越)
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);
到这就结束了哦!看到这的都不是一般人。
还行就留下赞吧!我们一起成长。(有啥问题可以留言哦!一起讨论,我也学习学习)。