はじめに
Pythonで日付や時刻を操作できるdatetimeというライブラリの基本的な使い方を紹介します。
datetimeでは日付や時刻を表したり、それらの計算ができます。

datetime --- 基本的な日付型および時間型
ソースコード:Lib/datetime.pydatetimeモジュールは、日付や時刻を操作するためのクラスを提供しています。日付や時刻に対する算術がサポートされている一方、実装では出力のフォーマットや操作のための効率的な属性の抽出に重点を置いています。AwareオブジェクトとNaiveオブジェクト:日時のオブジェクトは...
データ型
datetimeで主に扱うデータは以下になります。
date
: 日付のみを扱うtime
: 時刻のみを扱うdatetime
: 日付と時刻を扱うtimedelta
: 時刻の差を扱う
今の日付/時刻
本日の日付を取得する場合は以下です。
from datetime import date
today = date.today()
2021-08-31
現在の日付と時刻を取得する場合は以下です。
from datetime import datetime
now = datetime.now()
2021-08-31 22:05:08.906246
任意の日付/時刻
任意の日付は以下で表します。
from datetime import date
d = date(2021, 9, 30)
2021-09-30
任意の時刻は以下で表します。
from datetime import time
t = time(21, 11, 30)
21:11:30
任意の日付と時刻は以下で表します。
from datetime import datetime
dt = datetime(2021, 9, 1, 10, 00)
2021-09-01 10:00:00
時間の計算
timedelta
を利用して時間の計算ができます。
date
オブジェクトとtimedelta
で日付の計算ができます。
from datetime import date
from datetime import timedelta
today = date.today()
tomorrow = today + timedelta(days=1)
datetime
オブジェクトとtimedelta
でも計算ができます。
from datetime import datetime
from datetime import timedelta
now = datetime.now()
d = now - timedelta(days=1, hours=2, minutes=45)
date
オブジェクト同士、datetime
同士で時間の差を計算できます。
結果はtimedelta
型になります。
from datetime import datetime
dt1 = datetime(2021, 9, 3, 21, 15)
dt2 = datetime(2021, 8, 30, 19, 30)
dt1 - dt2
4 days, 1:45:00
stringからdatetimeの変換
strptime
を利用します。
引数にはdatetimeに変換したい日付を表す文字列とその文字列のフォーマットを指定します。
from datetime import datetime
dt_string = "2021/08/30 14:30:11"
st_dt = datetime.strptime(dt_string, '%Y/%m/%d %H:%M:%S')
書式のコードは下記で確認できます。

datetime --- 基本的な日付型および時間型
ソースコード:Lib/datetime.pydatetimeモジュールは、日付や時刻を操作するためのクラスを提供しています。日付や時刻に対する算術がサポートされている一方、実装では出力のフォーマットや操作のための効率的な属性の抽出に重点を置いています。AwareオブジェクトとNaiveオブジェクト:日時のオブジェクトは...
date/time/datetimeからstringへの変換
strftime
を利用します。
from datetime import datetime
now = datetime.now()
now_st = now.strftime('%Y/%m/%d %H:%M:%S')
書式のコードは下記で確認できます。

datetime --- 基本的な日付型および時間型
ソースコード:Lib/datetime.pydatetimeモジュールは、日付や時刻を操作するためのクラスを提供しています。日付や時刻に対する算術がサポートされている一方、実装では出力のフォーマットや操作のための効率的な属性の抽出に重点を置いています。AwareオブジェクトとNaiveオブジェクト:日時のオブジェクトは...