IT

Pythonの日時操作

今回は日時の操作方法について説明します。

日時情報の基本

日時情報は『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(日曜日)で表現する