datetimeモジュールでの日付データの処理(文字列変換・加算・減算など)について毎回ググっている気がするので自分用にメモしました。
Contents
現在時刻を取得
import datetime now = datetime.datetime.now() # UTC print(now) print(type(now))
<実行結果>
2022-09-16 05:43:02.513007
<class ‘datetime.datetime’>
today = datetime.date.today() now = datetime.datetime.today() print(today) # 2022-09-16 print(now) # 2022-09-16 15:11:44.342740
下のものは現在時刻の取得で datetime が二つ重なっていますが、間違いではありません。日付も時刻もハイフンで区切られています。
年・月・日をそれぞれ抽出する
today 関数で取得した「今日の日付」は date オブジェクトであり、年月日をそれぞれフィールドとして持ちます。この中から年・月・日を別々に抽出したい場合は以下のように記述します。
# 日付と時刻を構成する要素の取り出し print(f'year: {now.year}, month: {now.month}, day: {now.day}') print(f'hour: {now.hour}, minute: {now.minute}, second: {now.second}') print(f'micro second: {now.microsecond}')
日付データの変換(datetime→文字型)
datetime型から文字型への変換は以下で実行可能です
import datetime dt = datetime.datetime.now() # UTC str_dt = dt.strftime('%Y/%m/%d %H:%M:%S') print(str_dt)
<実行結果>
2022/09/23 17:23:58
日付データの変換(文字型→datetime型)
文字型をdatetime型に変換する際は以下のように記述します。
tstr = '2022-9-16 13:49:37' tdatetime = datetime.datetime.strptime(tstr, '%Y-%m-%d %H:%M:%S') print(tdatetime) print(type(tdatetime))
日付の加算・減算
日本時間を取得する
import datetime dt2 = now + datetime.timedelta(hours=9) print(dt2)
hours=9で9時間加算、減算したい時は-9みたいな書き方で実行できます
翌日と昨日の日付を取得する
他にも引数には「days =日」「months = 月」も使えます。
tommorow = now + datetime.timedelta(days=1) yesterday = now + datetime.timedelta(days=-1)
コメント