今回は日時の操作方法について説明します。
Contents
日時情報の基本
日時情報は『datetimeモジュール』が扱っています。ここで紹介する関数は全て上記のモジュール内にあるため、初めにimportする必要があります。
日時情報を操作する
日時情報を操作するには『datetimeモジュール』の『datetimeクラス』を使います。
日時オブジェクトを作る(datetime.datetime(年,月,日,時,分,秒,マイクロ秒))
日時オブジェクトを作るには、『datetime.datetime(年,月,日,時,分,秒,マイクロ秒)』で生成します。年・月・日は必須となります。
>>> import datetime
>>> date = datetime.datetime(2018,12,13,15,00,00,0000)
>>> print(date)
2018-12-13 15:00:00
現在の日時を取得する(datetime.datetime.now())
現在の日時を取得するには、『datetime.datetime.now()』を使います。
>>> import datetime
>>> date = datetime.datetime.now()
>>> print(date)
2018-12-13 15:02:07.586619
また、各引数は個別に取得することも出来ます。
年 | .year |
---|---|
月 | .month |
日 | .day |
時 | .hour |
分 | .minute |
秒 | .second |
マイクロ秒 | .microsecond |
年を取得した場合は以下のようになります。
>>> import datetime
>>> date = datetime.datetime.now()
>>> date.year
2018
曜日を取得する(datetime.datetime(年,月,日).weekday())
曜日を取得するには、『datetime.datetime(年,月,日).weekday()』を使います。
>>> import datetime
>>> date = datetime.datetime.now()
>>> date.weekday()
3
結果は0~6の7つの値で返されます。それぞれの内訳は以下の通りです。
月曜日 | 0 |
---|---|
火曜日 | 1 |
水曜日 | 2 |
木曜日 | 3 |
金曜日 | 4 |
土曜日 | 5 |
日曜日 | 6 |
日付オブジェクトを作る(date(年,月,日))
datetimeクラスで時・分・秒・マイクロ秒を指定しなければ、日付のみを表示することもできますが、datetimeモジュールには予め日付のみを表現する『date(年,月,日)』クラスがあります。dateクラスはdatetimeクラスのサブクラスであるため、基本的にはメソッドも引き継がれますが、現在の日付を表すには『today()』を用いる必要があります。
>>> import datetime
>>> date = datetime.date.today()
>>> print(date)
2018-12-13
また、datetimeクラスとdateクラス同士はそのまま計算することはできないので、変換する必要があります。datetimeクラス→dateクラスは『.date()』を使います。dateクラス→datetimeクラスは、専用のメソッドはないため年月日を再取得します。
日時情報を計算する
日時情報は通常の数値計算のように加算・減算や比較といった計算ができます。ここではそれらについて説明します。
日時情報に値を加算・減算する(datetime.datedelta(単位=値))
datetimeモジュールの『datetime.datedelta(単位=値)』を使えば、日時に値を加算・減算できます。ただし、年月の計算はできません。なお、引数の単位には全て”s”が付きます。
加算
>>> import datetime
>>> date = datetime.datetime.now()
>>> print(date)
2018-12-13 15:33:56.537637
>>> date = date + datetime.timedelta(hours = 1)
>>> print(date)
2018-12-13 16:33:56.537637
減算
>>> import datetime
>>> date = datetime.datetime.now()
>>> print(date)
2018-12-13 15:36:18.383553
>>> date = date - datetime.timedelta(hours = 1)
>>> print(date)
2018-12-13 14:36:18.383553
対応する引数の単位は以下の通りです。
週間 | weeks |
---|---|
日 | days |
時 | hours |
分 | minutes |
秒 | seconds |
ミリ秒 | milliseconds |
マイクロ秒 | microseconds |
日時同士を加算・減算する
日時情報のオブジェクト同士を加算・減算することもできます。
>>> import datetime
>>> date1 = datetime.datetime(2018,12,13)
>>> date2 = datetime.datetime(2018,12,14)
>>> date = date2 - date1
>>> print(date)
1 day, 0:00:00
日時を比較する
日時の比較をするには、比較演算子を使います。
>>> import datetime
>>> date1 = datetime.datetime(2018,12,13)
>>> date2 = datetime.datetime(2018,12,14)
>>> date2 > date1
True
日時を文字列へ変換する(.strftime(表現書式))
日時を文字列へ変換するには、『.strftime(表現書式)』を使います。
>>> import datetime
>>> date = datetime.datetime(2018,12,13,15,50,00,0000)
>>> str = date.strftime('%Y/%m/%d %H:%M:%S')
>>> print(str)
2018/12/13 15:50:00
各書式は以下の通りです。
年 | %Y |
---|---|
月 | %m |
日 | %d |
時 | %H |
分 | %M |
秒 | %S |
まとめ
・日時操作はdatetimeモジュールを使う
・日時操作は年月日をはじめ、時分秒からマイクロ秒まで使える
・曜日は0(月曜日)~6(日曜日)で表現する