Java @ mock

Calendar

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

Calendar


Javaにおいて java.util.Calendarクラスは日付・時刻を扱うクラスです。

Calendarは以下のように抽象クラスとして宣言されています。
public abstract class Calendar extends Object implements Serializable, Cloneable

Calendarのコンストラクタは
protected Calendar() 
protected Calendar(TimeZone zone, Locale aLocale) 
とprotectedで宣言されています。

インスタンスを得るために通常はpublicのコンストラクタを使いますが、
Calendarのコンストラクタはprotectedで宣言されているので、
protectedで宣言されていないgetInstance()などを使いオブジェクトを作る必要があります。
getInstanceはstaticメソッドのため、Calendar.getInstance()のように使用します。
このようなインスタンスを生成するためのメソッドをファクトリメソッドと呼ぶそうです。


Calendar 使用例 1

CalendarSample1.java
import java.util.Calendar;

class CalendarSample1 {
	
	public static void main([[String]][] args) {
		// デフォルトのタイムゾーンおよびロケールを使用してカレンダを取得します
		Calendar calendarObject = Calendar.getInstance();
		
		System.out.println(calendarObject);
	}
}

実行結果

C:\java>javac CalendarSample1.java

C:\java>java CalendarSample1
java.util.GregorianCalendar[time=1236166813703,areFieldsSet=true,areAllFieldsSet
=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Tokyo",offset=324000
00,dstSavings=0,useDaylight=false,transitions=10,lastRule=null],firstDayOfWeek=1
,minimalDaysInFirstWeek=1,ERA=1,YEAR=2009,MONTH=2,WEEK_OF_YEAR=10,WEEK_OF_MONTH=
1,DAY_OF_MONTH=4,DAY_OF_YEAR=63,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOU
R=8,HOUR_OF_DAY=20,MINUTE=40,SECOND=13,MILLISECOND=703,ZONE_OFFSET=32400000,DST_
OFFSET=0]

次にCalendarのフィールドを使います。


Calendar 使用例 2 (フィールド)

Calendarには以下のstaticフィールドがあります。※他にもあります
  • YEAR getおよびsetのための、年を示すフィールド値です。
  • MONTH getおよびsetのための、月を示すフィールド値です。
  JANUARY(0), FEBRUARY(1)、MARCH(2)、APRIL(3)、MAY(4)、JUNE(5)、JULY(6)、
  AUGUST(7)、SEPTEMBER(8)、OCTOBER(9)、NOVEMBER(10)、DECEMBER(11)
  • DATE getおよびsetのためのフィールド値で、月の日を示します。
  • HOUR_OF_DAY getおよびsetのためのフィールド値で、時刻を示します。
  • MINUTE getおよびsetのためのフィールド値で、分を示します。
  • SECOND getおよびsetのためのフィールド値で、秒を示します。
  • DAY_OF_WEEK getおよびsetのためのフィールド値で、曜日を示します。
  SUNDAY(1)、MONDAY(2)、TUESDAY(3)、WEDNESDAY(4)、THURSDAY(5)、FRIDAY(6)、SATURDAY(7)

CalendarSample2.java
import java.util.Calendar;

class CalendarSample2 {

       public static void main(String[] args) {
		
       Calendar calendarObject = Calendar.getInstance();
		
       [[int]] calendarYear = calendarObject.get(Calendar.YEAR);
       int calendarMonth = calendarObject.get(Calendar.MONTH) + 1;
       int calendarDay = calendarObject.get(Calendar.DATE);
       int calendarHour = calendarObject.get(Calendar.HOUR_OF_DAY);
       int calendarMinute = calendarObject.get(Calendar.MINUTE);
       int calendarSecond = calendarObject.get(Calendar.SECOND);
       int calendarWeek = calendarObject.get(Calendar.DAY_OF_WEEK);
		
		System.out.println(calendarYear + "/" + calendarMonth + "/" +
			calendarDay + "/ " +  calendarHour + ":" + calendarMinute +
			":" + calendarSecond + " " + getWeek(calendarWeek));
	}
	
	// Calendar.DAY_OF_WEEKで得られた値を文字列に変換するメソッドです
	static String getWeek(int week) {
		String[] stringWeek = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
		[[return]] stringWeek[week-1];
	}
}

実行結果
C:\java>javac CalendarSample2.java

C:\java>java CalendarSample2
2009/3/4/ 21:17:26 WED


Calendar 使用例 3 (get setメソッド)

Calendarのget、setメソッドには以下のようなものがあるようです。
void set(int year, int month, int date) 
         カレンダフィールド YEAR、MONTH、および DAY_OF_MONTH の値を設定します。
void set(int year, int month, int date, int hourOfDay, int minute) 
         カレンダフィールド YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY、および MINUTE の値を設定します。
void set(int year, int month, int date, int hourOfDay, int minute, int second) 
         フィールド YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE、および SECOND の値を設定します。
int get(int field) 
         指定されたカレンダフィールドの値を返します。
         
CalendarSample3.java
import java.util.Calendar;

class CalendarSample3 {
	
	public static void main(String[] args) {
		
		Calendar calendarObject = Calendar.getInstance();
		calendarObject.set(2009,1,2);
		
		System.out.println(calendarObject.get(Calendar.YEAR));
		System.out.println(calendarObject.get(Calendar.MONTH));
		System.out.println(calendarObject.get(Calendar.DATE));
	}
}

実行結果
C:\java>javac CalendarSample3.java

C:\java>java CalendarSample3
2009
1
2


Calendar 使用例 4 (addメソッド)

add(int field, int amount)はCalendarのフィールドに対して加算(減算)を行うメソッドです。
fieldにはCalendarのフィールドを指定し、amountには加算する数値を指定します。
CalendarSample4.java
import java.util.Calendar;

class CalendarSample4 {
	
	public static void main(String[] args) {
		
		Calendar calendarObject = Calendar.getInstance();
		printCalendar(calendarObject);
		calendarObject.add(Calendar.YEAR, 1);
		printCalendar(calendarObject);
		calendarObject.add(Calendar.MONTH, 1);
		printCalendar(calendarObject);
		calendarObject.add(Calendar.DATE, 1);
		printCalendar(calendarObject);
	}
	
	// Caldendarオブジェクトの日付を表示するメソッドです
	static void printCalendar(Calendar calendarObject) {
		int calendarYear = calendarObject.get(Calendar.YEAR);
    	        int calendarMonth = calendarObject.get(Calendar.MONTH) + 1;
    	        int calendarDay = calendarObject.get(Calendar.DATE);
    	        int calendarHour = calendarObject.get(Calendar.HOUR_OF_DAY);
    	        int calendarMinute = calendarObject.get(Calendar.MINUTE);
    	        int calendarSecond = calendarObject.get(Calendar.SECOND);
    	        int calendarWeek = calendarObject.get(Calendar.DAY_OF_WEEK);
 	
 		System.out.println(calendarYear + "/" + calendarMonth + "/" +
 			calendarDay + "/ " +  calendarHour + ":" + calendarMinute +
 			":" + calendarSecond + " " + getWeek(calendarWeek));
	}
	
	// Calendar.DAY_OF_WEEKで得られた値を文字列に変換するメソッドです
 	static String getWeek(int week) {
 		String[] stringWeek = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
 		return stringWeek[week-1];
 	}
}

実行結果
C:\java>javac CalendarSample4.java

C:\java>java CalendarSample4
2009/3/4/ 22:12:38 WED
2010/3/4/ 22:12:38 THU
2010/4/4/ 22:12:38 SUN
2010/4/5/ 22:12:38 MON


ウィキ募集バナー