
JavaでのCalendarクラスの使い方とは?現在の日付時刻取得や日付時刻の変更・比較
- SE
- JavaでのCalendarクラスの使い方を教えてください。
- PM
- Javaでは日付時刻を扱うクラスとして、Calendarクラスが用意されています。現在の日付時刻取得や日付時刻の変更・比較ができます。
目次
JavaでのCalendarクラスの使い方とは?
今回は、JavaでのCalendarクラスの使い方について説明します。Javaでは日付時刻を扱うクラスとして、Calendarクラスが用意されています。現在の日付時刻取得や日付時刻の変更・比較ができます。
JavaでのCalendarクラスの使い方に興味のある方はぜひご覧ください。
日付時刻の取得
JavaのCalendarクラスはgetInstanceメソッドでオブジェクトを生成します。オブジェクトに対してgetメソッドを実行することで、年月日や時刻などの情報を取得できます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import java.util.Calendar; public class Main { public static void main(String[] args) throws Exception { // オブジェクト生成 Calendar cal = Calendar.getInstance(); // 年月日 System.out.println(""year:"" + cal.get(Calendar.YEAR)); System.out.println(""month:"" + cal.get(Calendar.MONTH)); // 0-11 System.out.println(""date:"" + cal.get(Calendar.DATE)); // 時刻 System.out.println(""am/pm:"" + cal.get(Calendar.AM_PM)); System.out.println(""hour:"" + cal.get(Calendar.HOUR)); // 0-11 System.out.println(""hour of day:"" + cal.get(Calendar.HOUR_OF_DAY)); // 0-23 System.out.println(""minute:"" + cal.get(Calendar.MINUTE)); System.out.println(""second:"" + cal.get(Calendar.SECOND)); System.out.println(""millisecond:"" + cal.get(Calendar.MILLISECOND)); // その他 System.out.println(""day of week:"" + cal.get(Calendar.DAY_OF_WEEK)); System.out.println(""day of year:"" + cal.get(Calendar.DAY_OF_YEAR)); System.out.println(""day of week in month:"" + cal.get(Calendar.DAY_OF_WEEK_IN_MONTH)); } } |
実行結果は以下のようになります。(実行する日時によって結果が異なります。)
1 2 3 4 5 6 7 8 9 10 11 12 |
year:2020 month:8 date:10 am/pm:0 hour:11 hour of day:11 minute:49 second:20 millisecond:429 day of week:5 day of year:254 day of week in month:2 |
例えば、月末日を求めたい場合、以下のように記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.util.Calendar; public class Main { public static void main(String[] args) throws Exception { // オブジェクト生成 Calendar cal = Calendar.getInstance(); // 月(0-11) System.out.println(""month:"" + cal.get(Calendar.MONTH)); // 月の最終日 System.out.println(""day of week in month:"" + cal.getActualMaximum(Calendar.DATE)); } } |
実行結果は以下のようになります。
1 2 |
month:8 day of week in month:30 |
Calendar.MONTHは0-11が取得されるので、8と出力されたら9月のことになります。getActualMaximumメソッドで月の最終日が取得できます。
このように、JavaではCalendarオブジェクトに対してgetメソッドを実行することで、年月日や時刻などの情報を取得できます。
日付時刻の設定
JavaではCalendarオブジェクトに対して日付時刻の設定ができます。setメソッドを使用します。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import java.util.Calendar; public class Main { public static void main(String[] args) throws Exception { // オブジェクト生成 Calendar cal = Calendar.getInstance(); System.out.println(cal.getTime()); // 設定 System.out.println(""set()""); cal.set(2020, 9, 1, 12, 34, 56); System.out.println(cal.getTime()); } } |
実行結果は以下のようになります。
1 2 3 |
Thu Sep 10 12:12:19 UTC 2020 set() Thu Oct 01 12:34:56 UTC 2020 |
setメソッドは日付時刻を指定できます。
このように、JavaではCalendarオブジェクトに対して日付時刻の設定ができます。
日付時刻の加減算
JavaではCalendarオブジェクトに対して日付時刻の加減算ができます。addメソッドやrollメソッドを使用します。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import java.util.Calendar; public class Main { public static void main(String[] args) throws Exception { // オブジェクト生成 Calendar cal = Calendar.getInstance(); System.out.println(cal.getTime()); // 設定 System.out.println(""set()""); cal.set(2020, 9, 1, 12, 34, 56); System.out.println(cal.getTime()); // 加減算 System.out.println(""add()""); cal.add(Calendar.YEAR, 3); System.out.println(cal.getTime()); cal.add(Calendar.MONTH, -1); System.out.println(cal.getTime()); cal.add(Calendar.DATE, 40); // 40日加算すると月が替わる System.out.println(cal.getTime()); // 他のフィールドを変更しない(日だけがローテートする) System.out.println(""roll()""); cal.roll(Calendar.DATE, 40); System.out.println(cal.getTime()); } } |
実行結果は以下のようになります。
1 2 3 4 5 6 7 8 9 |
Thu Sep 10 12:12:19 UTC 2020 set() Thu Oct 01 12:34:56 UTC 2020 add() Sun Oct 01 12:34:56 UTC 2023 Fri Sep 01 12:34:56 UTC 2023 Wed Oct 11 12:34:56 UTC 2023 roll() Fri Oct 20 12:34:56 UTC 2023 |
addメソッドは日付時刻の加減算ができます。rollメソッドはaddメソッドに似ていますが、他のフィールドを変更しない加減算をします。
このように、JavaではCalendarオブジェクトに対して日付時刻の加減算ができます。
日付の比較
JavaではcompareToメソッドを利用して、Calendarオブジェクトの比較ができます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.util.Calendar; public class Main { public static void main(String[] args) throws Exception { // オブジェクト生成 Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); cal1.set(2020, 9, 10, 12, 34, 56); cal2.set(2020, 9, 11, 12, 34, 56); System.out.println(cal1.getTime()); System.out.println(cal2.getTime()); System.out.println(""""); // 比較 System.out.println(cal1.compareTo(cal2)); System.out.println(cal2.compareTo(cal1)); System.out.println(cal1.compareTo(cal1)); } } |
実行結果は以下のようになります。
1 2 3 4 5 6 |
Sat Oct 10 12:34:56 UTC 2020 Sun Oct 11 12:34:56 UTC 2020 -1 1 0 |
compareToメソッドは、比較元の方が前なら-1、後なら1を返します。また、等しければ0を返します。
このように、JavaではcompareToメソッドを利用して、Calendarオブジェクトの比較ができます。
- SE
- 日付時刻の取得や設定方法、日付時刻の加減算などよく理解できました。
- PM
- 日付時刻取得や日付時刻の変更・比較など、実際にソースコードを書いて指定してみましょう。
まとめ
いかがでしたでしょうか。JavaでのCalendarクラスの使い方について説明します。Javaでは日付時刻を扱うクラスとして、Calendarクラスが用意されています。現在の日付時刻取得や日付時刻の変更・比較ができます。
ぜひご自身でソースコードを書いて、理解を深めてください。