与日期时间相关的 SDK。
时区是人为构造的概念,只有涉及特定地区时才有意义。
与直觉相反,本地时间 表示与时区无关,也就是说,相关类没有存储时区信息的字段。
Java 8 之前:java.util.Date & Java.util.Calendar
#
Java 8 及更高版本:java.time.*
#
interface Temporal & final Class Instant Implements Temporal
#
Temporal 实例表示任意时间范围内的一个时刻。
可以向 this 加上或减去一段时间,并仍然产生一个 Temporal。
最终类 Instant 通过封装一个表示自纪元以来秒数的 long 和一个表示该秒内纳秒数的 int 来实现 Temporal。
重要方法:
static Instant now()static Instant ofEpochMillis(long millis)long until(Temporal endExclusive, TemporalUnit unit)
统一抽象:interface TemporalUnit 和 enum ChronoUnit Implements TemporalUnit
#
每个 ChronoUnit 枚举实例本质上都是带有描述性名称的 Duration。
与时区无关:java.time.LocalDate / java.time.LocalDateTime / java.time.LocalTime
#
本地 表示与时区无关。
从概念上说,
LocalDate是一个(year-month-day)三元组,LocalTime是一个(hour-minute-second)三元组,LocalDateTime是一个(year-month-day-hour-minute-second)六元组。
重要方法(适用于全部 3 个类)
long until(Temporal endExclusive, TemporalUnit unit)按指定单位计算距离另一个日期的时间量。
评论
在 GitHub 上阅读或评论(发表评论需要登录)