日付と時間 その2 date, time

前回の続きです。大抵の処理は前回学習したdatetime型で事足りると思いますが、日付と時刻についても学習しましょう。

date(日付)

dateオブジェクトの生成

引数に順に年月日を指定します。

from datetime import date
d = date(2017, 1, 2)

文字列からdateオブジェクトへの変換

datetimeのstrptimeメソッドに相当するものがないため、datetimeオブジェクトを一旦生成してからdateに変換します。

from datetime import datetime, date

# 文字列からの変換->datetimeを経由する
dt_str = '2017-04-01'
dt_obj = datetime.strptime(dt_str, '%Y-%m-%d') # datetimeを生成
d = dt_obj.date() # date型に変換する

現在日付の取得

これもdatetimeから変換します。

from datetime import datetime, date

# 現在日時の取得
dt_obj_now = datetime.now()
d = dt_obj_now.date() # date型に変換する

日数の計算

datetimeと同様、timedeltaを使用します。

from datetime import timedelta, date

d1 = date(2017, 1, 2)
delta = timedelta(days=3) # 3日
d2 = d1 + delta # 3日加算
print(d2) # 2017-01-05 

また、引き算により日付の間隔を算出することが可能です。

from datetime import timedelta, date

d1 = date(2016, 12, 22) # 2016-12-22
d2 = date(2017, 1, 2) # 2017-01-02
delta = d2 - d1 # 日付の間隔を取得する
print(delta) # 11 days, 0:00:00

time(時間)

概ねdateオブジェクトと同様なので、サンプルだけ掲載し、説明は割愛します。なお、timeオブジェクトは演算が定義されていませんので注意してください。

from datetime import datetime, time

# timeオブジェクトの生成
t1 = time(13, 0, 0)
print(t1) # 13:00:00

# 文字列からtimeへの変換(datetimeを経由する)
dt_str = '13:30:15'
dt_obj = datetime.strptime(dt_str, '%H:%M:%S')
t2 = dt_obj.time()
print(t2) # 13:30:15

MySQLのdatetime型に投入するための現在日時の文字列の取得はこちらのtipsをご参照ください。