日付と時刻の情報を指定してインスタンスを生成する
datetiem モジュールには日付や時刻を扱うクラスがいくつか定義されています。 datetime クラスは日付と時刻、 date クラスは日付、 time クラスは時刻、 timezone クラスはタイムゾーンに関する値を持ちます。ここでは日付や時刻に関する値を指定してそれぞれのクラスのインスタンスを生成する方法について解説します。
(Last modified: )
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 オブジェクトです。
次のサンプルを見てください。
import datetime print(datetime.datetime(2020, 7, 21, 6, 12, 30, 551)) >> 2020-07-21 06:12:30.000551 print(datetime.date(2019, 12, 9)) >> 2019-12-09 print(datetime.time(23, 18, 45, 31112)) >> 23:18:45.031112 tokyo_tz = datetime.timezone(datetime.timedelta(hours=9)) print(datetime.datetime(2020, 7, 21, 6, 12, 30, 551, tokyo_tz)) >> 2020-07-21 06:12:30.000551+09:00 ny_tz = datetime.timezone(datetime.timedelta(hours=-4)) print(datetime.datetime(2020, 7, 21, 6, 12, 30, 551, ny_tz)) >> 2020-07-21 06:12:30.000551-04:00
datetime クラス、 date クラス、 time クラスでぞれぞれインスタンスを作成し、日付や時刻に関する値を出力しました。
-- --
日付や時刻に関する値を指定してそれぞれのクラスのインスタンスを生成する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。