Сколько времени осталось до данной даты (дни, часы, минуты, с.) - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь сделать какие-то "часы крайнего срока" в python. Есть много тем о расчете разницы во времени, и я следовал за некоторыми и составил такой код:

import datetime
from dateutil.relativedelta import relativedelta

# Get current time:
today = datetime.date.today()
timenow = datetime.datetime.now()
current_time = str(today) + " " + str(timenow.strftime("%H:%M:%S"))

# Set deadline:
deadline = "2019-12-12 15:00:00"

# Calculate difference:
start = datetime.datetime.strptime(current_time,'%Y-%m-%d %H:%M:%S')
ends = datetime.datetime.strptime(deadline, '%Y-%m-%d %H:%M:%S')
diff = relativedelta(ends, start)

print("Now: " + current_time)
print("Deadline: " + deadline)

print(str(diff.days) + " days. " 
      + str(diff.hours) + " hours. " 
      + str(diff.minutes) + " minutes. " 
      + str(diff.seconds) + " seconds. " 
      )

Но проблема в том, что он всегда будет показывать разницу максимум в один месяц ... Так чтов чем проблема?

1 Ответ

1 голос
/ 15 октября 2019

Просто вычтите вашу дату начала с датой окончания.

import datetime
today = datetime.date.today()
timenow = datetime.datetime.now()
deadline = "2019-12-12 15:00:00"
current_time = str(today) + " " + str(timenow.strftime("%H:%M:%S"))
start = datetime.datetime.strptime(current_time,'%Y-%m-%d %H:%M:%S')
ends = datetime.datetime.strptime(deadline, '%Y-%m-%d %H:%M:%S')

print(start - ends)

Как предлагается в комментариях, вам на самом деле не нужно использовать оба значения .today() и .now() по отдельности, .now()возвращает текущую дату и время как сам объект datetime.

import datetime
timenow = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
deadline = "2019-12-12 00:00:00"
start = datetime.datetime.strptime(timenow,'%Y-%m-%d %H:%M:%S')
ends = datetime.datetime.strptime(deadline, '%Y-%m-%d %H:%M:%S')
print(start - ends)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...