Javaに関する様々な情報をご紹介します。

4TimeZoneクラス

Javaに関する様々な情報をご紹介します。

TimeZoneクラス

このページでは世界各地のタイムゾーン情報を保持するTimeZoneクラスについて解説します。Calendarクラスなどと組み合わせ、世界各地の日付・時刻情報を表示・操作できます。

ファクトリメソッド

このページでは世界各地のタイムゾーン情報を保持するTimeZoneクラスについて解説します。Calendarクラスなどと組み合わせ、世界各地の日付・時刻情報を表示・操作できます。

戻り型 メソッド 説明
static
TimeZone
getDefault( ) デフォルトのタイムゾーンを持つ、TimeZoneオブジェクトを生成します。
static
TimeZone
getTimeZone(String) 引数に指定されたタイムゾーンIDに基づいた、TimeZoneオブジェクトを生成します。

例1

//デフォルトのタイムゾーンを持つ、TimeZoneオブジェクトtz1を生成します。
TimeZone tz1 = TimeZone.getDefault();

//アメリカ ロサンゼルスのタイムゾーンを持つ、TimeZoneオブジェクトtz2を生成します。
TimeZone tz2 = TimeZone.getTimeZone("America/Los_Angeles");

メソッド

TimeZoneクラスで用意されている主なメソッドについて解説します。

戻り型 メソッド 説明
static
String[ ]
getAvailableIDs( ) 利用可能なすべてのタイムゾーンIDを取得します。
String getDisplayName( ) タイムゾーンをユーザに適した表示形式で取得します。
String getID( ) タイムゾーンIDを取得します。
void setID(String) タイムゾーンIDを設定します。

【例2】TimeZoneクラスとCalendarクラスを使用して、異なるタイムゾーンの時刻を表示するプログラムを作成します。

import java.util.*;

class ExDate4 {
    public static void main(String[] args) {
        //(1)TimeZoneオブジェクトの生成
        TimeZone tz1 = TimeZone.getTimeZone("Europe/London");
        //(2)Calendarオブジェクトの生成
        Calendar cal1 = Calendar.getInstance(tz1);

        //(3)タイムゾーンの表示
        System.out.println(tz1.getDisplayName());
        //(4)タイムゾーンの時刻の表示
        System.out.println(cal1.get(Calendar.HOUR_OF_DAY) + ":" +
            cal1.get(Calendar.MINUTE) + ":" +
            cal1.get(Calendar.SECOND));

        //(5)TimeZoneオブジェクトの生成
        TimeZone tz2 = TimeZone.getTimeZone("Asia/Tokyo");
        //(6)TimeZoneオブジェクトの変更
        cal1.setTimeZone(tz2);

        //(7)タイムゾーンの表示
        System.out.println(tz2.getDisplayName());
        //(8)タイムゾーンの時刻の表示
        System.out.println(cal1.get(Calendar.HOUR_OF_DAY) + ":" +
            cal1.get(Calendar.MINUTE) + ":" +
            cal1.get(Calendar.SECOND));
    }
}

解説2

  1. (1)タイムゾーンに”Europe/London"を指定して、TimeZoneオブジェクトtz1を生成します。
  2. (2)”Europe/London"のタイムゾーンを持つtz1を引数に指定して、Calendarオブジェクトcal1を生成します。
  3. (3)getDisplayNameメソッドを使用し、設定されているタイムゾーンを表示します。
  4. (4)設定したタイムゾーンの情報を持つ、日時を表示します。
  5. (5)タイムゾーンに”Asia/Tokyo"を指定して、TimeZoneオブジェクトtz2を生成します。
  6. (6)setTimeZoneメソッドを使用し、cal1オブジェクトのタイムゾーンをtz2に変更します。
  7. (7)getDisplayNameメソッドを使用し、設定されているタイムゾーンを表示します。
  8. (8)設定したタイムゾーンの情報を持つ、日時を表示します。

実行結果2

C:\source>javac ExDate4.java

C:\source>java ExDate4
グリニッジ標準時
10:27:13
日本標準時
18:27:13

C:\source>

タイムゾーンID

getAvailableIDsメソッドを使用すると利用できるすべてのタイムゾーンIDを表示できます。以下はすべてのタイムゾーンIDを表示するプログラムです。

【例3】getAvailableIDsメソッドを使用して、利用できるすべてのタイムゾーンIDを表示するプログラムです。

import java.util.*;

class ExDate5 {
    public static void main(String[] args) {
        //利用できるすべてのタイムゾーンIDを取得
        String[] tzIDs = TimeZone.getAvailableIDs();
        //取得したタイムゾーンIDを元に順番にTimeZoneオブジェクトを生成
        //生成されたTimeZoneオブジェクトのIDとタイムゾーンを表示
        for (int i = 0; i < tzIDs.length; i++) {
            TimeZone tz1 = TimeZone.getTimeZone(tzIDs[i]);
            System.out.println(tz1.getID() + " : " + tz1.getDisplayName());
        }
    }
}

以下に主なタイムゾーンIDとgetTimeZoneメソッドで表示されるタイムゾーンを記載します。

タイムゾーンID タイムゾーン
US/Hawaii ハワイ標準時
America/Los_Angeles 太平洋標準時
America/Belize 中部標準時
America/New_York 東部標準時
Europe/London グリニッジ標準時
Europe/Paris 中部ヨーロッパ時間
Africa/Cairo 東ヨーロッパ時間
Asia/Kuwait アラビア標準時
Europe/Moscow モスクワ標準時
Asia/Calcutta インド標準時
Asia/Singapore シンガポール時間
Asia/Tokyo 日本標準時

4TimeZoneクラス