Java Mania

Java Mania

Calendar

日付と時刻の計算やフォーマットを行なうためのクラス。 Dateクラスのメソッドは現在ほとんど推奨されていないので、日付操作にはこのCalendarクラスを使った方が良いだろう。 個人的に日付の計算に関してはDateクラスよりCalendarクラスの方が断然やりやすい。
HomePageTop▲

How To Use -使用方法-

Calendarクラスは下記のように使用する。

コンストラクタの説明

※Calendarクラスのインスタンス生成はgetInstance()で行なうため、 コンストラクタはprotectedである。そのため今回はコンストラクタの説明を省略する。

メソッドの説明
※全てのメソッドを網羅していないので、詳細はAPIリファレンスを参照する。
public static Calendar getInstance()
デフォルトのタイムゾーンとロケールを使用してカレンダを取得する。
public static Calendar getInstance(TimeZone zone,Locale aLocale)
第1引数に指定されたタイムゾーンと第2引数に指定されたロケールを使用してカレンダを取得する。 どちらか一方のみ指定することも可能。
public final Date getTime()
Calendarクラスの現在の時刻を取得する。
public final void setTime(Date date)
Calendarクラスの時刻を指定された時刻で設定する。
public int get(int field)
指定されたフィールドの値を取得する。
public void set(int field,int value)
指定されたフィールドにvalueの値を設定する。
public final void set(int year,int month,int date,int hour,int minute,int second)
指定された年月日時分秒を設定する。
public final void clear()
すべての時間フィールドの値をクリアする。
public boolean before(Object when)
whenのCalendarとどちらが過去かを判定する。
public boolean after(Object when)
whenのCalendarとどちらが未来かを判定する。
public abstract void add(int field,int amount)
指定されたフィールドにamountの値を足す。


Calendarクラスのフィールド
フィールド 説明
AM_PM 午前、午後を取得
DATE 月の日を取得
DAY_OF_MONTH 月の日を取得
DAY_OF_WEEK 曜日を取得
DAY_OF_WEEK_IN_MONTH 現在の月の何度目の曜日かを取得
DAY_OF_YEAR 現在の年の何日目かを取得
DST_OFFSET 夏時間のオフセットをミリ秒単位で取得
ERA ユリウス暦の AD または BC などの年代を取得
HOUR 午前または午後の何時かを取得
HOUR_OF_DAY 時刻を取得(24時間単位)
MILLISECOND ミリ秒を取得
MINUTE 分を取得
MONTH 月を取得
SECOND 秒を取得
WEEK_OF_MONTH 現在の月の何週目かを取得
WEEK_OF_YEAR 現在の年の何週目かを取得
YEAR 年を取得
HomePageTop▲

Source -CalendarTest.java-

package mania.test;

import java.util.Calendar;

public class CalendarTest
{
  // Calendarの使用方法
  public static void main(String[] args)
  {
    System.out.println("===実行結果===");

    // インスタンスの生成
    Calendar cal1 = Calendar.getInstance();

    // 2006年2月20日17時30分00秒を設定
    cal1.set(2006, Calendar.FEBRUARY, 20, 17, 30, 00);
    System.out.print("cal1:");
    write(cal1);

    // 月を12月に修正
    cal1.set(Calendar.MONTH, Calendar.DECEMBER);
    System.out.print("cal1:");
    write(cal1);

    // 30時間を追加
    cal1.add(Calendar.HOUR_OF_DAY, 30);
    System.out.print("cal1:");
    write(cal1);

    // 2000年1月1日10時20分30秒を設定
    Calendar cal2 = Calendar.getInstance();
    cal2.set(2000, Calendar.JANUARY, 1, 10, 20, 30);
    System.out.print("cal2:");
    write(cal2);

    // cal1とcal2を比較
    if(cal1.after(cal2))
    {
      System.out.println("cal1の方がcal2より未来である");
    }
  }

  public static void write(Calendar cal)
  {
    System.out.print(cal.get(Calendar.YEAR) + "年");
    System.out.print(cal.get(Calendar.MONTH) + 1 + "月");
    System.out.print(cal.get(Calendar.DAY_OF_MONTH) + "日");
    System.out.print(cal.get(Calendar.HOUR_OF_DAY) + "時");
    System.out.print(cal.get(Calendar.MINUTE) + "分");
    System.out.println(cal.get(Calendar.SECOND) + "秒");
  }
}
HomePageTop▲

Results -実行結果-


===実行結果===
cal1:2006年2月20日17時30分0秒
cal1:2006年12月20日17時30分0秒
cal1:2006年12月21日23時30分0秒
cal2:2000年1月1日10時20分30秒
cal1の方がcal2より未来である

HomePageTop▲

Copyright (C) 2006, JavaMania. All Rights Reserved.