■Dateインスタンスから「6つのint値」を生成する
Date d = new Date();
Calendar c = Calendar.getInstance();
c.setTime(d);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
int hour = c.get(Calendar.HOUR);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
■例①
import java.util.Calendar;
import java.util.Date;
public class Test02 {
public static void main(String[] args) {
Date nowTime = new Date();
Calendar c = Calendar.getInstance();
c.setTime(nowTime);
int y = c.get(Calendar.YEAR);
System.out.println("今年は" + y + "です");
int m = c.get(Calendar.MONTH);
System.out.println("今日は" + m + "月です");
int d = c.get(Calendar.DAY_OF_MONTH);
System.out.println("今日は" + m + "月" + d + "日です");
int h = c.get(Calendar.HOUR);
System.out.println("今の時間は" + h + "時です");
int min = c.get(Calendar.MINUTE);
System.out.println("今の時間は" + h + "時" + min + "分です");
int s = c.get(Calendar.SECOND);
System.out.println("今の時間は" + h + "時" + min + "分" + s + "秒です");
System.out.println(y + "年" + m + "月" + d + "日" + h + "時" + min + "分" + s + "秒です。");
}
}
■例①実行結果
今年は2015です
今日は10月です
今日は10月11日です
今の時間は2時です
今の時間は2時51分です
今の時間は2時51分11秒です
2015年10月11日2時51分11秒です。
■「6つのint値からDateインスタンスを生成する
Calendar c = Calendar.getInstance();
c.set(年,月,日,時,分,秒); 又は c.set(Calendar.~,値);
Date d = c.getTime();
※~にはYEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE、DAYなどを指定する。
■例②
import java.util.Calendar;
import java.util.Date;
public class Test02 {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.set(2020, 11, 24, 23, 15, 17);
Date past = c.getTime();
System.out.println(past);
c.set(Calendar.MONTH, 11 - 1);
Date past2 = c.getTime();
System.out.println(past2);
c.set(2017, 5, 17, 13, 13, 24);
Date past3 = c.getTime();
System.out.println(past3);
c.set(Calendar.DAY_OF_MONTH, 2);
Date past4 = c.getTime();
System.out.println(past4);
System.out.println("11月に設定したい↓ 11月より-1した値を入れる");
c.set(Calendar.MONTH, 10);
Date past5 = c.getTime();
System.out.println(past5);
}
}
■例③実行結果
Thu Dec 24 23:15:17 JST 2020
Tue Nov 24 23:15:17 JST 2020
Sat Jun 17 13:13:24 JST 2017
Fri Jun 02 13:13:24 JST 2017
11月に設定したい↓ 11月より-1した値を入れる
Thu Nov 02 13:13:24 JST 2017
■例③解説
Java CalendarクラスのMONTHには0~11の値が入っている(実際の月よりも1少ない)ので
出力するときに+1した値にすると正しい月が表示されます。
■Calendarクラス
Dateクラスだけでは年月日や時刻など普段使っている形式をを扱うことは出来ません。
このページでは日付・時刻の表示・操作に使用するCalendarクラスについて解説します。このクラスで年、月日、時刻、曜日が分かりやすい形で表示されます。 またロケール、タイムゾーンに即して表示が可能です。
■ファクトリメソッド
Calendarクラスのコンストラクタはアクセスレベルがprotectedで宣言されており、他のクラスから使用することができません。そのため、Calendarオブジェクトを生成するときは、Calendarクラスで用意されているファクトリメソッドを使用します。 すなわち静的メソッドのgetInstanceを使うことで、現在の環境に合った暦を操作するインスタンスを得ることができます。