あぼぼーぼ・ぼーぼぼ

のんびり生きたい

Pythonで25時のような表記をdatetimeに変換する

そのままdatetimeにしようとするとエラーが発生する。

import datetime


dt_str = '2020/06/07 25:05'
d = datetime
    .datetime
  .strptime(dt_str, '%Y/%m/%d %H:%M')

# ValueError: time data '2020/06/07 25:05' does not match format '%Y/%m/%d %H:%M'

なので、日付部分をdatetime、時刻部分をtimedeltaとして生成し、両者を足せばOK。

import datetime


dt_str = '2020/06/07 25:05'
d_str = dt_str[:10]  # 2020/06/07
t_str = dt_str[11:]  # 25:05
hour = float(t_str[:2])  # 25
minute = float(t_str[3:])  # 05

d = datetime
  .datetime
    .strptime(d_str, '%Y/%m/%d')  # 2020-06-07 00:00:00

delta = datetime
    .timedelta(hours=hour, minutes=minute)  # 1 day, 1:05:00

dt = d + delta  # 2020-06-08 01:05:00

Python3.7