Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 > Java基本 > 日付・時刻 −4.TimeZoneクラス
更新日:2006/3/25
日付・時刻−4.TimeZoneクラス
このページでは世界各地のタイムゾーン情報を保持するTimeZoneクラスについて解説します。Calendarクラスなどと組み合わせ、世界各地の日付・時刻情報を表示・操作できます。
ファクトリメソッド
TimeZoneクラスのオブジェクトを生成する場合、ファクトリメソッドを使用します。ここでは、TimeZoneクラスで用意されているファクトリメソッドについて解説します。
戻り型
メソッド
説明
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). タイムゾーンに”Europe/London"を指定して、TimeZoneオブジェクトtz1を生成します。
(2). ”Europe/London"のタイムゾーンを持つtz1を引数に指定して、Calendarオブジェクトcal1を生成します。
(3). getDisplayNameメソッドを使用し、設定されているタイムゾーンを表示します。
(4). 設定したタイムゾーンの情報を持つ、日時を表示します。
(5). タイムゾーンに”Asia/Tokyo"を指定して、TimeZoneオブジェクトtz2を生成します。
(6). setTimeZoneメソッドを使用し、cal1オブジェクトのタイムゾーンをtz2に変更します。
(7). getDisplayNameメソッドを使用し、設定されているタイムゾーンを表示します。
(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
日本標準時



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道