エンジニアの将来って?

現在8年目エンジニアがプログラムの解説、ゲームの研究を書く雑記ブログです

【Java】TimeZoneについて解説します

こんにちは。たいら(@tairaengineer2)です。
今回の記事はJavaTimeZoneについての解説記事です。

スポンサーリンク

 

前提条件:eclipseの環境

この記事では、eclipseのバージョンは

バージョン Eclipse4.7 Oxygen

を使っています。
インストールの仕方は、下の記事をご参考ください。

www.tairax.com

eclipseでのJavaプロジェクト作成方法は、以下の記事をご参考ください。

www.tairax.com

eclipseでのJavaファイル作成方法は、以下の記事をご参考ください。

www.tairax.com

TimeZoneとは

TimeZoneとは、

  • 日付
  • 時間
  • 地域ごとのタイムゾーン

を扱うときに使うとても便利なライブラリです。

public abstract class TimeZone
extends Object
implements Serializable, Cloneable

TimeZoneは、タイムゾーン・オフセットを表します。また、サマー・タイムを認識します。

TimeZone (Java Platform SE 8)から引用させて頂きました

TimeZoneを使うときは、以下のようにimportが必要です。

import java.util.TimeZone;

次の章で実際に使って解説していきます。

サンプル1:デフォルトのタイムゾーンの取得の仕方

デフォルトのタイムゾーンを取得する場合、【getDefault】というメソッドを使います。

public static TimeZone getDefault()

Java仮想マシンのデフォルトのTimeZoneを取得します。
キャッシュされたデフォルトのTimeZoneが使用可能な場合は、そのクローンが返されます。それ以外の場合、このメソッドは次の手順に従ってデフォルトのタイムゾーンを判定します。

  • user.timezoneプロパティの値が使用可能な場合は、それをデフォルトのタイムゾーンIDとして使用します。
  • プラットフォームのタイムゾーンIDを検出します。プラットフォームのタイムゾーンとIDのマッピングのソースは、実装によって異なる場合があります。
  • 指定または検出されたタイムゾーンIDが不明の場合は、最後の手段としてGMTを使用します。

TimeZone (Java Platform SE 8)から引用させて頂きました

【getDefault】メソッドの使い方を解説します。

解説で使うJavaプログラムの概要

【getDefault】メソッドを使ってデフォルトのTimeZoneを取得して表示させるだけのプログラムです。
日本で実行しているので、デフォルト値は日本のタイムゾーンが設定されていればOKです。

Javaプログラム

package sample;
import java.util.TimeZone;

/**
* TimeZoneを練習するクラス
*
*/
public class TimeZoneSample {

	/**
	* メインメソッド
	* @param args
	*/
	public static void main(String[] args) {

		// デフォルトのTimeZoneを取得
		TimeZone timeZone = TimeZone.getDefault();

		// デフォルトのTimeZoneを表示
		System.out.println(timeZone.getDisplayName());
	}
}

実行結果

f:id:Tairax:20200206135801p:plain

日本標準時

デフォルト値が日本の標準時刻であることが確認できました!

解説

【getDisplayName】メソッドについて解説します。
【getDisplayName】メソッドは、引数だけ異なって名前は同じメソッド、つまりオーバーロードされているため、ここでは引数がない場合の 【getDisplayName】メソッドを解説します。

引数が無い【getDisplayName】は、ユーザーに適したタイムゾーンの名前を返すメソッドです。

TimeZone (Java Platform SE 8)から引用させて頂きました

public final String getDisplayName()
デフォルト・ロケールでのユーザーへの表示に適した、このTimeZoneの標準時の長い名前を返します。

今回で言うと、日本で実行しているので日本のタイムゾーンがデフォルト値として渡されたため

日本標準時

と表示されました。

サンプル2:指定したタイムゾーンの取得の仕方

指定したタイムゾーンを取得する場合、【getTimeZone】というメソッドを使います。

public static TimeZone getTimeZone(String ID)
指定されたIDのTimeZoneを取得します。

TimeZone (Java Platform SE 8)から引用させて頂きました

様々な国と地域で設定されているため、タイムゾーンのIDは膨大な数です。
タイムゾーンのIDは、

  • 短縮形式
  • 完全な形式

の2種類あります。
この記事では、本当にごく一部のみ抜粋して下記にまとめました。

短縮形式 完全な形式
日本標準時 JST Asia/Tokyo
アメリカ東部標準時 EST America/Atikokan
ハワイ・アリューシャン標準時 HST US/Hawaii
中国標準時 CST Asia/Chongqing
東ヨーロッパ標準時 EET Africa/Cairo
西ヨーロッパ標準時 WET Africa/Casablanca
インド標準時 IST Asia/Calcutta

タイムゾーンのIDは、完全な形式を使うことが公式で推奨されています。
なぜなら短縮形式だと、ダブっているIDも存在するからです。

短縮形式は、JDK 1.1.xとの互換性のためだけにサポートされているため、完全な名前を使用する必要がある

TimeZone (Java Platform SE 8)から引用させて頂きました

【getTimeZone】メソッドの使い方を解説します。

解説で使うJavaプログラムの概要

【getTimeZone】メソッドを使って、指定したTimeZoneを取得して表示させるだけのプログラムです。
指定するタイムゾーンはハワイ・アリューシャン標準時です。

Javaプログラム

package sample;
import java.util.TimeZone;

/**
* TimeZoneを練習するクラス
*
*/
public class TimeZoneSample {

	/**
	* メインメソッド
	* @param args
	*/
	public static void main(String[] args) {

		// ハワイのTimeZoneを取得
		TimeZone timeZone = TimeZone.getTimeZone("US/Hawaii");

		// ハワイのTimeZoneを表示
		System.out.println(timeZone.getDisplayName());
	}
}

実行結果

f:id:Tairax:20200206154711p:plain

ハワイ標準時

指定した通り、ハワイの標準時間が設定できたことを確認できました!

 

スポンサーリンク

 

まとめ:TimeZoneを使ってみよう!

以上がTimeZoneの仕様について解説しました。

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

 

ほかにもJava解説記事を書いてます。
よければご参考ください。

【Java8】filterメソッドを解説【ラムダ式】

【Java】TreeSetの特徴を分かりやすく解説します。

 

今までブログで書いたJavaの解説記事のまとめは、こちらをご参考ください。

【Java】ブログで書いた文法記事のまとめ