第6章. 日付と時間
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
6.0 はじめに
Java 1.0のDate クラスと、それに代わるJava 1.1のCalendar クラスの矛盾と曖昧さに、開発者は10年半苦しんできた。シンプルで賢明な Date4Jや、より包括的な Joda-Timeパッケージなど、いくつかの代替Date 代替パッケージが登場した。Java 8では、Javaコミュニティ・プロセスの庇護の下、開発者Stephen Colebourneが指揮を執るJSR-310という、日付とタイムを扱うための、一貫性があり、よく考えられた新しいパッケージが導入された。これは、彼の以前のパッケージJoda-Timeをベースにしているが、いくつかの重要な設計変更が加えられている。1このパッケージはISO 8601の日付に偏っており、デフォルトの形式は例えば2015-10-23T10:22:45である。しかし、もちろん他のカレンダースキームでも動作する。
新しいAPIの主な利点のひとつは、、日付/時刻の加算/減算といった便利な演算子を提供することだ。これらの便利な演算子を何度も再実装することで、開発者は多くの時間を浪費していた。とはいえ、何百万行ものコードが旧APIに基づいているので、それらを簡単にレビューし、この章の最後のレシピであるレシピ6.9で、新APIとレガシーコードとのインタフェースを検討する。
新しいAPIのもうひとつの利点は、ほとんどすべてのオブジェクトが不変性であり、スレッドセーフであることだ。これは、超並列時代にまっしぐらに進んでいく中で、大きな利点となるだろう。
set メソッドは存在せず、従ってゲッターメソッドのパラダイムは常に意味をなさないので、APIはそのようなメソッドに代わる一連の新しいメソッドを提供する(表6-1参照)。
| 名前付け | 説明 |
|---|---|
|
別のオブジェクトと組み合わせる |
|
指定されたフォーマッタを使って、フォーマットされた文字列を生成する。 |
|
ファクトリー:入力パラメータをターゲットのインスタンスに変換する。 |
|
インスタンスから1つのフィールドを取り出す |
|
与えられたオブジェクトの状態を調べる |
|
与えられた金額を減算したコピーを返す |
|
BuilderFactory: 現在の時刻や日付などを取得する。 |
|
ファクトリー:入力を解析して新しいメソッドを作成する |
|
ファクトリー:単一の入力文字列を解析し、ターゲットのインスタンスを生成する。 |
|
指定された金額を加算したコピーを返す |
|
このオブジェクトを別の型に変換する |
|
与えられたフィールドを変更したコピーを返す。 |
JSR 310 APIは、十数個の主要クラスを規定している。時間を表すものは、連続時間か人間時間である。連続時間は、Unix時間に基づくもので、(コンピューター)時間の黎明期からの深い真理であり、単調に増加する単一の数値として表現される。Unixの時間値0は、1970年1月1日(UTC)(Unixが発明された頃)の最初の1秒を表す。そこでのインクリメントの各単位は、1秒の時間を表していた。しかし、1970年からの秒数を表す32ビットの整数は、西暦2038年というかなり早い時期になくなってしまう。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access