У меня есть программа, которая должна сохранять общее количество времени, потраченного на выполнение чего-либо.У меня сохранено значение, которое должно начинаться с «000d 00h 00m 00s» в течение 0 дней, часов, минут и секунд.Однако, если я пытаюсь добавить время к нему, я получаю «ValueError: данные времени« 000d 00h 00m 00s »не соответствуют формату«% jd% Hh% Mm% Ss »».
Если я изменю начальную строку на «001d 00h 00m 00s», это добавит время без проблем, но тогда у меня будет значение на 24 часа больше, чем точное.Он также будет работать, если я просто уберу счетчик дней и у него будет «00h 00m 00s», но он все равно будет сбрасывать часы после того, как он достигнет 24.
Возможность начать с «000d 00h 00m 00s»было бы предпочтительнее, но если это невозможно, переполнение часов (т. е. «25h 00m 00s») будет работать.
from datetime import *
EmptyTime = '000d 00h 00m 00s'
EmptyTimeThatWorks = '001d 00h 00m 00s'
ExampleTime = '174d 19h 07m 53s' # June 23 7:07 PM
FMT = "%jd %Hh %Mm %Ss"
def TaskEnded(RunningTotal, TimerStartTime):
PresentTime = datetime.now().strftime(FMT) #PresnetTime is when the TaskEnded
st = datetime.strptime(TimerStartTime, FMT) #Brings things into the right format
pt = datetime.strptime(PresentTime, FMT) #Brings things into the right format
rt = datetime.strptime(RunningTotal, FMT) #Brings things into the right format, but EmptyTime cant be
# conveted to the right time because day '0' doenst exist
# while hour, minute, and second 0 do
NewTotal = rt + (pt - st) #takes the running total and adds the timer value, which is the difference of start and end times
NewTotal2 = datetime.strftime(NewTotal, FMT) # Puts the Datetime value back into the right format FMT
print(NewTotal2)
return NewTotal2
TaskEnded(EmptyTimeThatWorks, ExampleTime)
TaskEnded(EmptyTime, ExampleTime)