8. 日時とその表現/タイムゾーンこの章では日時の取扱とその表現、およびタイムゾーンについて説明します。 8.1. カレンダー日時の計算、および取得を行う場合には、java.util.Calendarクラスを使用します。Calendarは特定の日時情報を保持するクラスで、日時計算のためのメソッドも提供しています。ただしCalendarは抽象クラスなので、実際にはその実装クラスであるjava.util.GregorianCalendarを使用します。GregorianCalendarは世界のほとんどの地域で使用されている、グレゴリオ暦で日時を管理するクラスです。Calendarを取得するためには、CalendarのgetInstanceクラスメソッドか、GregorianCalendarのコンストラクタで作成します。 Calendar cal=Calendar.getInstance(); Calendar cal=new GregorianCalendar(2002, 4, 1); CalendarのgetInstanceは現在時刻で初期化されたカレンダーを返します。GregorianCalendarはコンストラクタの引数で指定した日時で初期化されたカレンダーを返します。引数の無いコンストラクタを使用した場合には、現在時刻で初期化されたカレンダーを返します。 特定のフィールド(年・月・日など)の値を取得したい場合には、「get」メソッドを使用します。getメソッドの引数は1つで取得するフィールドを指定します。引数の値には、Calendarクラスで定義されているクラス変数を用います。 int year=cal.get(Calendar.YEAR); int month=cal.get(Calendar.MONTH); フィールドを指定する上で使用する、主要なクラス変数を以下にまとめます。
Calendarには、それぞれの月を表すクラス変数JANUARY, FEBUARY...や、曜日SUNDAY, MONDAY...、午前・午後を表すクラス変数AM, PMも定義されています。 保持している日時を変化させたい場合には「add」「roll」「clear」「set」メソッドを使用します。addは特定のフィールドに対して、加算を行うメソッドです。負の数を指定すると、減算を意味します。 cal.add(Calendar.MONTH, 1); cal.add(Calendar.DATE, -1); addメソッドは特定のフィールドの影響が、他のフィールドにも現れます。例えば「1月31日」に「1日」加えると、「2月1日」になります。それに対して、rollメソッドは特定のフィールドにしか変更を加えません。「1月31日」に「1日」加えると、「1月1日」となります。 cal.roll(Calendar.DATE, true); // 引数がtrueなら1加算、falseなら1減算 cal.roll(Calendar.DATE, 2); clearは特定のフィールドの値を0にするメソッドです。引数のないclearメソッドを使用すると、全フィールドが初期化されます。 cal.clear(Calendar.SECOND); setは特定のフィールドの値を指定するメソッドです。決まったフィールドに対して値を設定するものもあります。 cal.set(Calendar.YEAR, 1); cal.set(2002, 4, 1); // 年月日のフィールドに値を設定する もしフィールドの最大値・最小値を越えて値を設定する(例えば日のフィールドに40)と、他のフィールドとあわせて補正が行われます。例えば「1月40日」は自動的に「2月9日」となります。 日時の比較を行う場合には、「after」「before」メソッドを使用します。複数のCalendarで管理されている日時の前後関係を調べる事ができます。 cal.after(cal2); cal.before(cal3); (実習課題1)プログラム引数で指定した年月のカレンダーを表示するコンソールプログラムを作成しなさい。 (実習課題2)プログラム引数で指定した年がうるう年かどうか調べるコンソールプログラムを作成しなさい。 |
![]()
![]()
|