Java 8 java.time时间类
2022-01-17 本文已影响0人
花落红窗
前言
在Java 8中新增了表示时间的类,用来替代原来的Date、Calendar类
在新的时间类中,有三个时间概念需要与原来的作区分,可以参考SQL里的时间类型
- Date —— 日期,不包含时间
- Time —— 一天中的时间
- DateTime —— 日期加时间
Java 8的时间相关的几个包
- java.time:核心时间类
- java.time.chrono 其他地方的纪年法
- java.time.format 时间格式化相关的类
- java.time.temporal 定义时间的基础接口
- java.time.zone 时区相关的类
常用的类
类 | 说明 |
---|---|
Duration | 表示持续时间,从一个时间点持续到另一个时间点,比如:数据结构课从8:00上到10:00 |
Instant | 时间点 |
LocalDate | 本地日期,默认时区 |
LocalDateTime | 本地日期时间,默认时区 |
MonthDay | 月份中的日期 |
OffsetDateTime | 时区偏移量的日期时间 |
OffsetTime | 时区偏移量的事件 |
Period | 表示时间段,最小单位是天,开始结束时间点不确定,比如:国庆放7天假 |
Year | 年 |
YearMonth | 一年中的月 |
ZonedDateTime | 时区的日期时间 |
ZoneId | 时区ID,比如Asia/Shanghai |
DayOfWeek | 一周的天 |
Month | 月 |
DateTimeFormatter | 日期格式化 |
UML类图
java.time包部分类UML图.png转换关系
Java8 Time类转换图.pngSpring支持
Spring Boot
如果是Spring默认的Jackson库,在字段上Jackson的@JsonFormat
注解,Spring在序列化和反序列化时都会按照指定的格式进行格式化和解析,即请求类型和返回类型的字段都可以用。
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
LocalDateTime createAt;