【Java】タイムゾーンを設定するTimeZoneクラスの使い方!

  • このエントリーをはてなブックマークに追加
  • Pocket

Javaでタイムゾーンを表示したり、操作したりしたいときはTimeZoneクラスを使う。

このページではTimeZoneクラスについてまとめた。サンプルコードも用意しているので、参考になるはずだ。

JavaのTimeZoneクラス

タイムゾーンとは?

「時差」があるように地域によって、時間は違う。同じ時間を扱う地域をタイムゾーンという。

イギリスのグリニッジを中心に15度ずつ分割されたものだ。360度÷24時間=15度のため、このように決められている。

日本は韓国やインドネシアと同じタイムゾーンにある。日本国内は同一時間なので、タイムゾーンを意識する機会はあまりないと思うが、国をまたがって使われるアプリケーションやサーバーが外国にあるなどの場合、日付処理の際にその地域のタイムゾーンを意識することが必要だ。

Javaのタイムゾーン

Javaでタイムゾーンは、java.utilパッケージにあるTimeZoneクラスで扱うことができる。TimeZoneクラスを用いれば、世界各地の日付や時間の情報を取得して表示や利用することができるようになる。

主なタイムゾーンID

次のようなタイムゾーンが用意されている。

タイムゾーン

タイムゾーンID

日本標準時

Asia/Tokyo

グリニッジ標準時

Europe/London

アラビア標準時

Asia/Kuwait

東部標準時

America/New_York

太平洋標準時

America/Los_Angeles

ハワイ標準時

US/Hawaii

オブジェクトの取得

TimeZoneクラスは抽象クラスなので、new演算子を使って生成できない。オブジェクトの取得は以下のようになる。

デフォルトタイムゾーンを取得するTimeZone.getDefault ()

戻り値の型

Public static TimeZone

内容

 デフォルトのタイムゾーンを持つ、TimeZoneオブジェクトを取得する。

タイムゾーンIDを指定するTimeZone.getTimeZone(String ID)

戻り値の型

Public static TimeZone

内容

引数に指定されたタイムゾーンIDに基づいた、TimeZoneオブジェクトを取得する。

主なメソッド

主なメソッドは次の通りだ。

IDの一覧を取得するTimeZoneオブジェクト. getAvailableIDs( )

戻り値の型

Public String[]

内容

サポートされる利用可能な ID をすべて取得する。

戻り値:

ID の配列

タイムゾーン名を返すTimeZoneオブジェクト. getDisplayName( )

戻り値の型

Public String

内容

デフォルトロケールでの現在のタイムゾーンの名前を、ユーザーへの表示に適した形式で返す。このメソッドは、長い名前を返す。 ( 夏時間は含まれない)

ロケールの表示名がない場合、このメソッドは規定化されたカスタム ID 形式で文字列を返す。

戻り値:

デフォルトロケールでの現在のタイムゾーンを、人が理解できる形式にした名前

現在のタイムゾーンを取得するTimeZoneオブジェクト. getID( )

戻り値の型

Public String

内容

現在の所在地のタイムゾーンの ID を取得する。

戻り値:

現在の所在地のタイムゾーンの ID

タイムゾーンIDを設定するTimeZoneオブジェクト. setID( String ID)

戻り値の型

void

内容

タイムゾーン ID を設定する。

引数:

ID - 新しいタイムゾーン ID

これらのメソッドが用意されているので、状況に応じて使い分けていけばいいだろう。

タイムゾーンに関するTimeZoneクラスサンプルコード

Calendarクラスを使用したサンプルコード

実行結果

サンプルコードの説明

  • [1] デフォルト情報のタイムゾーンオブジェクトtzn1を取得。
  • [2] tzn1をもとにCalendarオブジェクトcal1を取得。
  • [3] getID メソッドを使用してtzn1のタイムゾーンIDを表示。
  • [4] getDisplayName メソッドを使用し、tzn1のタイムゾーンを表示
  • [5] cal1の日付情報を表示。
  • [6] タイムゾーンID "US/Hawaii”のタイムゾーンオブジェクトtzn2を取得。
  • [7] Calendarオブジェクトcal1にタイムゾーンtzn2を設定。
  • [8] tzn2のタイムゾーンIDを表示。
  • [9] tzn2のタイムゾーンを表示
  • [10]cal1の日付情報を表示。

Dateクラスを使用したサンプルコード

実行結果

サンプルコードの説明

  • [1] getTimeZoneメソッドを使用し、タイムゾーンID Europe/Londonを設定したタイムゾーンオブジェクトtznを取得。
  • [2] Dateオブジェクトdateを生成し実行時の日付情報を取得。SimpleDateFormatオブジェクトfmtで書式を設定した文字列に変換して表示。
  • [3] fmtにsetTimeZone メソッドを使用してtznを設定。文字列に変換して表示。

Calendarクラスと違いDateクラスではタイムゾーンが考慮されておらず、関連するメソッドは用意されていない。

その場合サンプルコードのようにSimpleDateFormatのsetTimeZoneメソッドを使用してタイムゾーンを設定して表示できるので参考にしていただきたい。

まとめ

このページではJavaのタイムゾーンを扱うTimeZoneクラスについてまとめてきた。

アプリケーションをグローバル展開するときなど、必ず使うクラスになっている。ぜひ、この機会に使い方を理解しておこう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*