给定日期还剩多少时间(天,小时,分钟,秒)

问题描述 投票:0回答:1

我正在尝试在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. " 
      )

但是问题是,它将始终只显示一个月的最大差额……所以问题出在哪里?

python time clock difference
1个回答
2
投票

只需将您的开始日期减去结束日期。

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)
© www.soinside.com 2019 - 2024. All rights reserved.