すずしんろぐ

人生大逆転を目指す、鈴木俊吾の成長日記

Java 日時を扱うLocalDateTimeクラスの基本的な使い方

time 2016/11/10

Tag:

日付

こんにちは、すずしんです。

Javaのプログラミングをするにあたって、日付操作をする必要が出てきました。
そこで、Java8から導入されたLocalDateTimeクラスについて今回勉強してみました。
今回の記事では、このLocalDateTimeクラスの基本的な使い方についてまとめてみます。

新API

Java7までは、Date/Calendar/DateFormatクラスなどを主に使用して日付関連の操作を行っていましたが…。
Java8からは、java.timeパッケージに新しくAPIが追加されています。
例としては以下のようなクラスがあります。

・Instant – 日時(エポック秒)
・LocalDateTime – タイムゾーンなし日時
・ZonedDateTime – タイムゾーンあり日時
・OffsetDateTime – オフセットあり日時

特徴

日付関連の新APIの特徴としては、以下のような点が挙げられます。

・データを格納するクラスは、日時/日付のみ/時間のみなど保持する要素やタイムゾーンの有無などによって、複数のクラスから選べるようになりました。
・データの保持と日付操作が1クラスでできるようになりました。
・日時クラスはImmutableなオブジェクトになり、既存インスタンスの値を変更する際は新しくインスタンスを作成する事になります。
・旧APIで月の値は0-11でしたが、新APIでは1-12になりました。

LocalDateTimeクラス

新APIで新しく追加されたクラスはかなりあるのですが…。
ここでは、LocalDateTimeクラスに絞って基本的な使い方についてまとめてみます。

現在日時の取得 – now

LocalDateTimeクラスで現在日時を取得するには、now()メソッドを使用します。

インスタンスの作成 – of

インスタンスの生成にはof()メソッドが使えます。

DateTimeFormatterを使ったフォーマット

DateTimeFormatterクラスを使ってLocalDateTimeクラスのフォーマットをすることもできます。

フィールドの取得 – get

特定のフィールド値を取得するにはget***()メソッドを使用します。
これはCalendarクラスのget()に相当します。

時間の切り捨て – truncatedTo

ある特定の時間以降を切り捨てるにはtruncatedTo()を使います。

他の日時クラスに変換 – to/at

LocalDateTimeクラスを別の日時クラスに変換するにはto/at系のメソッドを使用します。

日付操作

加算・減算をするには、plus/minusメソッドを使用します。

月初/月末を求めるには、withメソッドの引数にTemporalAdjustersの値を指定します。

差を求めるには、ChronoUnitクラスのbetweenメソッドを使用します。
また、DurationやPeriodで取得することも可能です。

日付の比較をするには、isAfter/isBefore/isEqualを使用します。

ひとこと

今回の記事では、Java8で導入された日付関連の新APIのうち、LocalDateTimeクラスについてまとめてみました。
結構なボリュームになりましたが、これでもまだ一部です。
それだけかなりの機能があるということなのでしょうね。
LocalDateTimeクラスの使い方が大体分かれば、InstantクラスやZonedDateTimeクラスも似ていますのですぐ使いこなせるようになると思います。

新APIのクラスに慣れてしまえば、DateクラスやCalendarクラスを使っていた時よりも、きっと日付操作が簡単にできるようになるでしょうね。
私も早く使い方をマスターしたいものです。

follow us in feedly

down

コメントする




ファッション

プロフィール

鈴木俊吾(すずしん)

鈴木俊吾(すずしん)

大学卒業後、公務員を目指して試験に合格するも何故か辞退。その後は無職のまま特に何もない無駄な日々を過ごす。その内に精神状態がおかしくなり統合失調症を発症。今までに4度の入院を経験。ただいま絶賛人生のどん底を経験中。そんな私ですが、現在はフリーランスのプログラマーを目指して勉強を進めています。これまでにいくつかのアプリを公開しています。このブログは、人生大逆転を目指して奮闘する私の成長日記(?)です。どうか温かく見守って頂けるとありがたいです。 [詳細]

PR

広告枠
広告枠

ただいま広告を募集しています。
詳しくは以下のリンク先を参照してください。

アーカイブ



ブログ村ランキング