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

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

(Last modified: )

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
サンプルコード

次のサンプルを見てください。

import datetime

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

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

print(datetime.timezone.utc)
>> UTC

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

-- --

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

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。