Вы смотрите на datetime
модуль python. Мы используем datetime.strptime для преобразования строки datetime в объект datetime, затем используем datetime.timedelta для выполнения таких операций, как вычитание минут и часов
import datetime
#Convert the string to datetime object
dt = datetime.datetime.strptime('1970-01-01T00:00:00', '%Y-%m-%dT%H:%M:%S')
#Subtract 5 minutes from the time
print(dt - datetime.timedelta(minutes=5))
#Subtract 1 hour from the time
print(dt - datetime.timedelta(hours=1))
Выход будет 1969-12-31 23:55:00
Кроме того, вы также можете посмотреть библиотеку dateutil , которая дает вам dateutil.relativedelta , в которой вы также можете указать годы, дни и месяцы
import datetime
from dateutil.relativedelta import relativedelta
#Convert the string to datetime object
dt = datetime.datetime.strptime('1970-01-01T00:00:00', '%Y-%m-%dT%H:%M:%S')
#Subtract 5 minutes from the time
print(dt - relativedelta(days=5))
#Subtract 1 hour from the time
print(dt - relativedelta(month=1))
Вывод здесь будет
1969-12-27 00:00:00
1970-01-01 00:00:00
Теперь, чтобы не указывать hours,minutes,days
и т. Д. В качестве аргумента, вы можете преобразовать их все в стандартный формат (скажем, seconds
и minutes
), а затем использовать его.
Так, например, если вы хотите вычесть час и 5 минут, вы можете просто вычесть 65 минут
#Subtract 65 minutes from the time
print(dt - relativedelta(minutes=5))
#Subtract 1 hour and 5 minutes from the time
print(dt - relativedelta(hours=1, minutes=5))
Может быть, вы можете написать функцию, которая получает строку типа 5m
, 1h
, 2d
в качестве ввода и дает вам минуты в ответ
def get_minutes(s):
if 'm' in s:
return int(s.replace('m',''))
elif 'h' in s:
return int(s.replace('h', ''))*60
elif 'd' in s:
return int(s.replace('d', ''))*1440
print(get_minutes('5m'))
#5
print(get_minutes('1h'))
#60
print(get_minutes('2d'))
#2880
Затем вы можете использовать это в вашей функции timedelta
или relativedelta
, возможно, расширить эту функцию, чтобы включить больше типов временных строк
Точно так же вы можете придумать стандартное время, в которое вы переводите все свое время, а затем использовать его в аргументе!