日付と時刻の情報を指定してインスタンスを生成する

広告

datetiem モジュールには日付や時刻を扱うクラスがいくつか定義されています。 datetime クラスは日付と時刻、 date クラスは日付、 time クラスは時刻、 timezone クラスはタイムゾーンに関する値を持ちます。ここでは日付や時刻に関する値を指定してそれぞれのクラスのインスタンスを生成する方法について解説します。

datetimeクラス

datetime クラスは日付と時刻の両方の値を扱うクラスです。コンストラクタは次のようになっています。

class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

引数の意味と指定できる値の範囲は次の通りです。

year       : 年 1 <= year <= 9999
month      : 月 1 <= month <= 12
day        : 日 1 <= day <= 指定された月と年における日数
hour       : 時 0 <= hour < 24
minute     : 分 0 <= minute < 60
second     : 秒 0 <= minute < 60
microsecon : マイクロ秒 0 <= microsecond < 1000000
tzinfo     : タイムゾーン
fold       : 夏時間を考慮する場合は 1 そうでない場合は 0

引数でタイムゾーンを指定した場合だけ、インスタンスはタイムゾーンに関する情報を持ちます。(タイムゾーン情報を持つものを aware オブジェクト と呼び、タイムゾーン情報を持たないものを naive オブジェクト と呼びます)。

具体的には次のように記述します。 datetime クラスは datetime モジュールに含まれます。

import datetime

dt1 = datetime.datetime(2020, 7, 21)
print(dt1)
--> 2020-07-21 00:00:00

dt2 = datetime.datetime(2020, 7, 21, 6, 12, 30, 551)
print(dt2)
--> 2020-07-21 06:12:30.000551

tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
dt3 = datetime.datetime(2020, 7, 21, 6, 12, 30, 551, tokyo_tz)
print(dt3)
--> 2020-07-21 06:12:30.000551+09:00

この場合、 1 つめと 2 つめのインスタンスは naive オブジェクト、 3 つめのインスタンスは aware オブジェクトです。

※ タイムゾーンについては「タイムゾーンのインスタンスを生成する」を参照されてください。

dateクラス

date クラスは日付の値を扱うクラスです。コンストラクタは次のようになっています。

class datetime.date(year, month, day)

引数の意味と指定できる値の範囲は次の通りです。

year       : 年 1 <= year <= 9999
month      : 月 1 <= month <= 12
day        : 日 1 <= day <= 指定された月と年における日数

具体的には次のように記述します。 date クラスは datetime モジュールに含まれます。

import datetime

d = datetime.date(2020, 7, 21)
print(d)
--> 2020-07-21

date クラスはタイムゾーンに関する情報を持たないため、常に naive オブジェクトです。

timeクラス

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

class datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

引数の意味と指定できる値の範囲は次の通りです。

hour       : 時 0 <= hour < 24
minute     : 分 0 <= minute < 60
second     : 秒 0 <= minute < 60
microsecon : マイクロ秒 0 <= microsecond < 1000000
tzinfo     : タイムゾーン
fold       : 夏時間を考慮する場合は 1 そうでない場合は 0

引数でタイムゾーンを指定した場合だけ、インスタンスはタイムゾーンに関する情報を持ちます。

具体的には次のように記述します。 time クラスは datetime モジュールに含まれます。

import datetime

t1 = datetime.time(6, 12, 30, 551)
print(t1)
--> 06:12:30.000551

tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
t2 = datetime.time(6, 12, 30, 551, tokyo_tz)
print(t2)
--> 06:12:30.000551+09:00

この場合、 1 つめのインスタンスは naive オブジェクト、 2 つめのインスタンスは aware オブジェクトです。

サンプルプログラム

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

import datetime

print(datetime.datetime(2020, 7, 21, 6, 12, 30, 551))
print(datetime.date(2019, 12, 9))
print(datetime.time(23, 18, 45, 31112))

tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
print(datetime.datetime(2020, 7, 21, 6, 12, 30, 551, tokyo_tz))

ny_tz = datetime.timezone(datetime.timedelta(hours=-4))
print(datetime.datetime(2020, 7, 21, 6, 12, 30, 551, ny_tz))

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

python sample1-1.py

日付と時刻の情報を指定してインスタンスを生成する(1)

datetime クラス、 date クラス、 time クラスでぞれぞれインスタンスを作成し、日付や時刻に関する値を出力しました。

-- --

日付や時刻に関する値を指定してそれぞれのクラスのインスタンスを生成する方法について解説しました。

( Written by Tatsuo Ikura )

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

著者 / TATSUO IKURA

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