6.1.1 概述
- Java 1.0 中包含了一个 Date 类,但是它的大多数方法已经在 Java 1.1 中引入 Calendar 类的时候被废弃了,而 Calendar 并不比 Date 类好多少,它们有如下的问题:
- ① 可变性:像日期和时间这样的类对象应该是不可变的。Calendar 类可以使用三种方法更改日历字段:set() 、add() 和 roll() 。
- ② 偏移性:Date 中的年份是从 1900 年开始的,而月份是从 0 开始的。
- ③ 格式化:格式化只对 Date 有效,Calendar 则不行。
- ④ 它们不是线程安全的,不能处理闰秒等。
- 可以说,对日期和时间的操作一直是 Java 程序员最为痛苦的地方,没有之一。第三方库 joda-time 在 JDK8 出现之前的很长时间备受 Java 程序员欢迎。当然,JDK8 吸收了 joda-time 的精华,以一个新的开始为 Java 创建优秀的 API 。
- java.time – 包含值对象的基础包
- java.time.chrono – 提供对不同的日历系统的访问。
- java.time.format – 格式化和解析时间和日期。
- java.time.temporal – 包括底层框架和扩展特性。
- java.time.zone – 包含时区支持的类。