(Java)DateクラスとCalendarクラスのまとめ
Dateクラスの使い方
Date date1 = new Date(); //現在時刻 Date date2 = new Date(date1.getTime()); //1970年1月1日午前0時(GMT)から現在までの経過時間を指定=date1と同時刻 Date date3 = new Date(5000); //1970年1月1日午前0時(GMT)から5000ミリ秒経過 System.out.println(date1); System.out.println(date2); System.out.println(date3);
出力
Wed Jun 19 03:42:49 JST 2013 Wed Jun 19 03:42:49 JST 2013 Thu Jan 01 09:00:05 JST 1970
二つのdateを比較する関数なども用意されています。
引数ありコンストラクタは経過時間指定なのでちょっと使い勝手悪そう… setTime関数も同じく。
なお出力はSimpleDateFormatクラスを用いることで好きに改変出来ます。
参考http://www.javaroad.jp/java_date3.htm
Calendarクラスの使い方
Calendar cal = Calendar.getInstance(); System.out.println(cal)
タイムゾーンやロケールを指定することも出来ます。
で出力はというと…
java.util.GregorianCalendar[time=1371582720293,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Tokyo",offset=32400000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2013,MONTH=5,WEEK_OF_YEAR=25,WEEK_OF_MONTH=4,DAY_OF_MONTH=19,DAY_OF_YEAR=170,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=4,HOUR_OF_DAY=4,MINUTE=12,SECOND=0,MILLISECOND=293,ZONE_OFFSET=32400000,DST_OFFSET=0]
(;・∀・)… なんとなくわかるけど果てしなく見辛い。
なので
Calendar cal = Calendar.getInstance(); System.out.println(cal.getTime());
と書き、getTime関数を使ってCalendar型からDate型に変換することで
Wed Jun 19 04:20:13 JST 2013
という出力を得ることが出来ます。 (…Calendar#toString()何のためにあるんだろう。)
CalendarはDateとは違い、細かくset,getできます。
Calendar cal = Calendar.getInstance(); System.out.println(cal.getTime()); cal.set(Calendar.MINUTE, 18); //分だけを指定する System.out.println(cal.getTime()); cal.set(2012, 7, 22, 18, 36, 42); //全部指定する(月は0~11なので注意) System.out.println(cal.getTime()); System.out.println(cal.get(Calendar.DATE)); System.out.println(cal.get(Calendar.SECOND));
出力
Wed Jun 19 05:26:33 JST 2013 Wed Jun 19 05:18:33 JST 2013 Wed Aug 22 18:36:42 JST 2012 22 42
加減算もできます。月を2ずつ増やすとこんな感じ。
Calendar cal = Calendar.getInstance(); for(int i=0;i<5;i++){ System.out.println(cal.getTime()); cal.add(Calendar.MONTH, 2); }
出力
Wed Jun 19 04:57:49 JST 2013 Mon Aug 19 04:57:49 JST 2013 Sat Oct 19 04:57:49 JST 2013 Thu Dec 19 04:57:49 JST 2013 Wed Feb 19 04:57:49 JST 2014
年と月が自動で修正されていることがわかります。
Calendar型⇔Date型
・Calendar⇒Date
こっちは上でも使いました。
Calendar cal = Calendar.getInstance(); Date date = cal.getTime();
・Date⇒Calendar
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);