Java SE 8でProject Lambdaの次に注目される機能といえば、「Date and Time API」でしょう。

 今まで日時に関するAPIとしては、java.util.Dateクラスとjava.util.Calendarクラスを中心としたクラス群が提供されてきました。ただ、読者のみなさんも経験があると思いますが、DateクラスとCalendarクラスはいろいろと使いづらい点が多くあります。

 時間間隔を表すことができないことや、日時に関する演算の種類が少ないなど、機能的に足りていない部分も多くあります。

 これに対し、Date/Calendarクラスを置き換えるAPIが、Java SE 8で導入されたDate and Time APIです。

 Date and Time APIはJCPJSR 310として仕様策定が行われました。スペックリードは3人いますが、中心になっているのはStephen Colebourne氏です。Colebourne氏といえばJoda-Timeという日時に関するライブラリの作者でもあります。

 このような成り立ちをしているDate and Time APIですが、Date/Calendarクラスとの違いはどこにあるのでしょうか。

 両者の最も大きな違いは、Date/CalendarクラスがUNIX時間をベースにしているのに対し、Date and Time APIが「ISO 8601」をベースにしている点です。

 基準が異なるため、単純にDate/CalendarクラスからDate and Time APIに置き換えるわけにはいきません。

 UNIX時間とISO 8601では日時の扱いにさまざまな違いがあります。Date and Time APIを使いこなすためには、ISO 8601を理解しておく必要があります。そこで、今回はDate and Time APIのベースとなっているISO 8601について紹介していきます。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら