Javaで日付から年、月、日を抽出する

Javaで日付から年、月、日を抽出する

1. 概要

この短いチュートリアルでは、Javaの特定のDate からyearmonth、およびday を抽出する方法を見ていきます。

従来のjava.util.Dateクラスを使用して、またJava 8の新しい日時ライブラリを使用して、これらの値を抽出する方法を見ていきます。

Java 8では、number of good reasons用にまったく新しい日付と時刻のライブラリが導入されました。 他の利点に加えて、the new library provides a better API for operations such as extracting Year, Month, Day etc. from given Date.

また、新しい日時ライブラリに関するより詳細な記事をお探しの場合は、hereをご覧ください。

2. Java 7を使用する

特定のjava.util.Date について、YearMonthDay などの個々のフィールドを抽出します。 最初に行う必要があるのは、それをCalendarインスタンスに変換することです。

Date date = // the date instance
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

Calendar instanceを取得したら、そのgetメソッドを直接呼び出して、抽出する特定のフィールドを指定できます。

Calendar に存在する定数を使用して、特定のフィールドを抽出できます。

2.1. 年を取得

year,を抽出するには、引数としてCalendar.YEARを渡すことでget を呼び出すことができます。

calendar.get(Calendar.YEAR);

2.2. 月を取得

同様に、month,を抽出するには、引数としてCalendar.MONTH を渡すことでget を呼び出すことができます。

calendar.get(Calendar.MONTH);

Calendar の月はゼロインデックスであることに注意してください。 1月の場合、このメソッドは0を返します。

2.3. 取得日

最後に、day,を抽出するために、Calendar.DAY_OF_MONTH を引数として渡してget を呼び出します。

calendar.get(Calendar.DAY_OF_MONTH);

3. Java 8の使い方

新しいjava.timeパッケージには、Dateを表すために使用できるいくつかのクラスが含まれています。

各クラスは、Dateに加えて、格納する追加情報によって異なります。

基本的なLocalDate justには日付情報が含まれ、LocalDateTimeには日付と時刻の情報が含まれます。

同様に、OffsetDateTimeZonedDateTimeなどのより高度なクラスには、それぞれUTCからのオフセットに関する追加情報とtime-zoneに関する情報が含まれています。

いずれの場合も、これらのクラスはすべて、年、月、日付の情報を抽出するための直接メソッドをサポートしています。

これらの方法を調べて、a LocalDate インスタンス名localDateから情報を抽出してみましょう。

3.1. 年を取得

Year, LocalDateを抽出するには、単にa getYear メソッドを提供します。

localDate.getYear();

3.2. 月を取得

同様に、Month, weを抽出するには、getMonthValue APIを使用します。

localDate.getMonthValue();

Calendarとは異なり、LocalDateの月は1からインデックス付けされます。 1月の場合、これは1を返します。

3.3. 取得日

最後に、Day,を抽出するために、getDayOfMonthメソッドがあります。

localDate.getDayOfMonth();

4. 結論

このクイックチュートリアルでは、JavaのDateからYearMonth、およびDayの整数値を抽出する方法について説明しました。

古いDateクラスとCalendarクラス、およびJava8の新しい日時ライブラリを使用してこれらの値を抽出する方法を示しました。

このチュートリアルで使用されるスニペットの完全なソースコードはavailable over at Githubです。