pythonで日時の計算をしたい場合があります。
その場合は標準ライブラリであるdatetimeを使うことになりますが、毎回調べたりするのが面倒なのでその備忘録として記事にした次第です。
では、始めます。
1:datetimeで現在日時を取得する
まずはよくある使い方として現在日時を取得する方法です。
以下のように記述するだけで現在時刻を取得できます。
from datetime import datetime now_datetime = datetime.now() # 現在日時を取得 print(now_datetime) # 結果例 # 2020-12-11 18:53:59.833597
いい感じの文字列として整形したい場合は以下のようにstrftimeを使います。
from datetime import datetime now_datetime = datetime.now() # 現在日時を取得 now_datetime_str = now_datetime.strftime("%Y/%m/%d %H:%M:%S") # 現在日時を整形(yyyy/mm/dd HH:MM:SS) print(now_datetime_str) # 結果例 # 2020/12/11 18:57:39
2:文字列で来た日時をdatetimeに変換する
DBなどに保存された文字列の日時情報をdatetimeに変換して扱いたい場合もあるかと思います。
その場合は以下のようにします。
from datetime import datetime dt = datetime.strptime("2020/12/10 13:02:37", "%Y/%m/%d %H:%M:%S") # 任意のdatetime作成 print(type(dt)) print(dt) # 結果 # <class 'datetime.datetime'> # 2020-12-10 13:02:37
その他にも以下のような特殊な場合は余計な部分を削除したり置換したりして整形します。
from datetime import datetime # ちょっと特殊な場合 test_date = "2020/12/11T10:07:45.973831+09:00" # 変換に邪魔になる部分を置換 test_date = test_date.replace("T"," ") test_date = test_date.replace("+09:00","") # 日時を整形 test_date = datetime.strptime(test_date, "%Y/%m/%d %H:%M:%S.%f") print(type(test_date)) print(test_date) # 結果 # <class 'datetime.datetime'> # 2020-12-11 10:07:45.973831
3:datetimeの差分を計算する
日時同士の差分を取って時間経過を知りたい場合もあるかと思います。
その場合は以下のようにします。ちなみに過去日時から未来日時を引いた場合、マイナスの日時になります。
from datetime import datetime # 過去の時間 time_1 = datetime.strptime("2020/12/10 13:02:37", "%Y/%m/%d %H:%M:%S") print(time_1) # 少し先の時間 time_2 = datetime.strptime("2020/12/10 13:12:37", "%Y/%m/%d %H:%M:%S") print(time_2) # 差分を計算 result = time_2 - time_1 print("time_2 - time_1 = {}".format(str(result))) # 差分秒数を取得 result_seconds = result.total_seconds() print(result_seconds) if result_seconds >= 600.0: # 10分(600秒以上)差分があるかを判定 print("10 minute over!") # ----- 過去日時から未来日時を引くとマイナスになる ----- result2 = time_1 - time_2 print("time_1 - time_2 = {}".format(str(result2))) # 差分秒数を取得 result_seconds2 = result2.total_seconds() print(result_seconds2)
以上がpythonにおけるdatetimeの扱い方です。
日時の差分を取ったりするのは何かと使う機会があるかと思います。
・参考資料