jdk8—–LocalDateTime源码解析(上)
本文根据王爵大神的知乎专栏《跟上java8》进行编写,在此进行致敬。
使用工具为idea,过段时间会出一个idea如何查看源码的文档。
jdk8引入了time包,以用来进行改变date时间的缺陷,如线程不安全。LocalDate类用来生成日期,LocalTime用来生成时间,当然time包也可以对格式化,时区和特殊的日历:日本历、泰国的佛历。当然也有很好的api,在日常开发的时候,经常会用到两个时间的比较,isBefore和isAfter.
类图
LocalDateTime是个不可变的日期时间对象,这只是一个没有时区的的日期对象,同时他指标是年-月-日-小时-分钟-秒,可以精确到纳秒级,我们现在的时间日历为ISO-8601标准日历,同时支持闰年,实现了ChronLocalDateTime实现了时间比较的api**注意**:请不要使用==进行比较,要使用equal进行比较。(不知道翻译是否正确)
属性
//支持最低的时间 '-999999999-01-01T00:00:00
public static final LocalDateTime MIN = LocalDateTime.of(LocalDate.MIN, LocalTime.MIN);
//支持最大的时间:+999999999-12-31T23:59:59.999999999
public static final LocalDateTime MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX);
private static final long serialVersionUID = 6207766400415563566L;
private final LocalDate date;
private final LocalTime time;
方法
//从默认时区的系统时钟获取当前日期时间,这里默认的时区是jvm默认的时区,如果用户自定义了时区就会使用自定义的,否则会使用
static LocalDateTime now()
//从指定时区的系统时钟获取当前日期时间,使用clock中ZoneId(时区id)
static LocalDateTime now(ZoneId zone)