タイムゾーンのインスタンスを生成する

広告

datetiem モジュールに含まれる timezone クラスは tzinfo クラスのサブクラスでタイムゾーンに関する値を持ちます。ここでは UTC (協定世界時)との時間差を指定して timezone クラスのインスタンスを生成する方法について解説します。

timezoneクラス

timezone クラスはタイムゾーンの値を扱うクラスです。コンストラクタは次のようになっています。

class datetime.timezone(offset, name=None)

引数の offset には時刻差を表すオブジェクトである timedelta クラスのインスタンスを指定します。

timedelta クラスは時刻差の値を扱うクラスです。コンストラクタは次のようになっています。

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

引数には、時刻差をあらわす日(days)、秒(senconds)、マイクロ秒(microseconds)、ミリ秒(milliseconds)、分(minutes)、時(hours)、週(weeks)の値を指定します。

タイムゾーンの場合は、 UTC との時間に関する差を指定します。東京(日本)のタイムゾーンを取得するには hours=9 、ニューヨーク(アメリカ合衆国)のタイムゾーンを取得するには hours=-5 を指定します。具体的には次のように記述します。 timezone クラスおよび timedelta クラスは datetime モジュールに含まれます。

import datetime

tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
print(tokyo_tz)
--> UTC+09:00

ny_tz = datetime.timezone(datetime.timedelta(hours=-4))
print(ny_tz)
--> UTC-04:00

なお UTC のタイムゾーンを取得するには時間差を 0 に指定して取得することができますが、代わりに timezone クラスの属性値である timezone.utc を使用することもできます。

import datetime

utc_tz1 = datetime.timezone(datetime.timedelta(0))
print(utc_tz1)
--> UTC

ny_tz2 = datetime.timezone.utc
print(utc_tz1)
--> UTC

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 sample2-1.py という名前で保存します。

import datetime

print(datetime.timezone(datetime.timedelta(hours=9)))
print(datetime.timezone(datetime.timedelta(hours=-4)))
print(datetime.timezone.utc)

その後で、次のように実行してください。

python sample2-1.py

timezoneクラス(1)

UTC との時間差を指定してタイムゾーンを表すインスタンスを作成することができました。

-- --

UTC (協定世界時)との時間差を指定して timezone クラスのインスタンスを生成する方法について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。