总结一下java8中的新特性新时间与日期API
LocalDate、LocalTime、LocalDateTime
类的实 例是不可变的对象,分别表示使用 ISO-8601日 历系统的日期、时间、日期和时间。它们提供了简单的日期或时间,并不包含当前的时间息。也不包含与时区相关的信息。
LocalDateTime常用方法
LocalDate / LocalTime
用法类似,只不过LocalDate
包含年月日
,LocalTime
只包含时分秒
方法名 | 返回值类型 | 解释 |
---|---|---|
now( ) | static LocalDateTime | 从默认时区的系统时钟获取当前日期 |
of(int year, int month, int dayOfMonth, int hour, int minute, int second) | static LocalDateTime | 从年,月,日,小时,分钟和秒获得 LocalDateTime的实例,将纳秒设置为零 |
plus(long amountToAdd, TemporalUnit unit) | LocalDateTime | 返回此日期时间的副本,并添加指定的数量 |
get(TemporalField field) | int | 从此日期时间获取指定字段的值为 int |
1 |
|
时间戳Instant
Instant:用于“时间戳”的运算。它是以Unix元年(传统 的设定为UTC时区1970年1月1日午夜时分)开始 所经历的描述进行运算,也就是UTC时间或者GMT格林威治时间
GMT=UTC
UTC+8=北京时间
1 | //2. Instant : 时间戳。 (使用 Unix 元年 1970年1月1日 00:00:00 所经历的毫秒值) |
时间 / 日期 差
- Duration:计算两个时间之间的间隔
- Period:计算两个日期之间的间隔
1 | //Duration : 用于计算两个“时间”间隔 |
时间校正器
- TemporalAdjuster : 时间校正器。有时我们可能需要获 取例如:将日期调整到“下个周日”等操作。
- TemporalAdjusters : 该类通过静态方法提供了大量的常 用 TemporalAdjuster 的实现。
TemporalAdjuster是一个函数接口,因此还可也用lambda表达式实现里面的接口
1 |
|
1 |
|
解析与格式化
java.time.format.DateTimeFormatter 类:该类提供了三种 格式化方法:
- 预定义的标准格式
- 语言环境相关的格式
- 自定义的格式
1 |
|
DateTimeFormatter时间工具类,转自DateTimeFormatter时间工具类
1 |
|
时区
Java 8不仅分离了日期和时间,也把时区分离出来了。现在有一系列单独的类如ZoneId来处理特定时区,ZoneDateTime类来表示某时区下的时间。这在Java 8以前都是 GregorianCalendar类来做的。下面这个例子展示了如何把本时区的时间转换成另一个时区的时间。
获取所有时区id
1 | Set<String> set = ZoneId.getAvailableZoneIds(); |
1 | // ZonedDate、ZonedTime、ZonedDateTime : 带时区的时间或日期 |