java.timeとは
Java SE 8から導入された、時間を扱うためのクラスです。
Joda-Time
JSR-310のリードは、Joda-Timeの作者です。
たくさんのクラスがある
以下のように、パッケージとクラスがたくさんあります。 いずれもJava SE 8での数字です。
パッケージ | インタフェース | クラス | 列挙型 | 例外 |
---|---|---|---|---|
java.time | 0 | 15 | 2 | 1 |
java.time.chrono | 6 | 11 | 4 | 0 |
java.time.format | 0 | 3 | 4 | 1 |
java.time.temporal | 7 | 6 | 2 | 1 |
java.time.zone | 0 | 4 | 1 | 1 |
合計 | 13 | 39 | 13 | 4 |
多くが不変かつfinal
ほとんどのクラスは以下のどれかのパターンで作成されています。
- finalかつ、不変かつ、継承なし(Objectを直接継承)
- 例外クラスは継承を使うのが良いため除外
- 抽象クラスだが、継承したクラスがfinalかつ不変であることを要求
- 2.を継承したクラスで、finalかつ不変
例外は以下の1クラスのみです。
- java.time.format.DateTimeFormatBuilder
公式サイト
外部サイト
- 日本人のための Date and Time API Tips (ja) - notepad
- JavaのDate and Time APIの設計思想が面白い - Qiita
- タイムゾーン呪いの書 - Qiita