Python获取两个日期时间字符串的差异

Python获取两个日期时间字符串的差异,python,list,variables,countdown,Python,List,Variables,Countdown,好的,我是Python新手(这是我的第一个程序)。我正在尝试制作一个倒计时计时器,它可以倒计时到任何给定的日期。我有一些(简单的)部分可以工作,我下一步的问题包括:我是否需要将给定的时间存储在一个列表中,然后解析它并将年份、日期等存储在单独的变量中?在Python中,我可以用一个日期减去另一个日期来给我剩余的时间吗 将当前时间存储在变量中。 将目标时间存储在变量中 差不多 或 左时间=目标时间-当前时间 你很接近。让您感到沮丧的是,您仍然需要将target_time(str)转换为datetim

好的,我是Python新手(这是我的第一个程序)。我正在尝试制作一个倒计时计时器,它可以倒计时到任何给定的日期。我有一些(简单的)部分可以工作,我下一步的问题包括:我是否需要将给定的时间存储在一个列表中,然后解析它并将年份、日期等存储在单独的变量中?在Python中,我可以用一个日期减去另一个日期来给我剩余的时间吗

将当前时间存储在变量中。 将目标时间存储在变量中 差不多 或 左时间=目标时间-当前时间

你很接近。让您感到沮丧的是,您仍然需要将target_time(str)转换为datetime。然后你会从减法中得到一个timedelta结果,你会发现它非常有用。使用以下命令分析日期:


你所需要做的就是打印出你正在等待的时间和现在的时间之差。这可以通过简单的减法很容易地完成,将所有内容转换为秒数,然后进行减法得到秒数,而不需要任何结转。接下来,只需使用循环将秒数除以60,得到余数为秒,然后再将分钟数除以60,余数为分钟,再除以24,得到余数为小时,将秒数转换为年、月、日、分和秒数

另外,我建议设置一个时间间隔,否则您的程序将在继续之前以尽可能快的速度打印相同的日期,而您可以设置一个时间间隔,否则您的循环将继续检查自身并打印您的“剩余时间”比需要的时间多

当然,还有更简单的方法,这只是为了详细解释手动操作所采取的步骤,以帮助您理解,而不是仅仅粘贴一行而不理解它

我希望这会有所帮助。

首先得到两个时间的对象,然后减去两个对象,得到类型的对象。然后调用timedelta对象的函数以获取以秒为单位的时间差。例如:

>>> from datetime import datetime

>>> target_time = '18/03/2022'

>>> target_datetime = datetime.strptime(target_time, '%M/%d/%Y')
>>> current_datetime = datetime.now() # No need to convert it to string

>>> time_left = target_datetime - current_datetime # return `timedelta` object



# returns total seconds 
>>> time_left.total_seconds()
139037207.03403    

datetime
模块无需自行转换所有内容即可完成此操作。谢谢。我刚才说了所有这些,希望能提高对它的理解。作为提示,在模块文档中提供查找和。
target_day = input("What date are you waiting for (day/month/year format, please)?")
time_left = target_time - current_time
while current_time:
    if current_time == target time:
        break
    print("It's time!")

print(\rtime_left)
print("You have " + weeks + "weeks, " + days + "days," + hours + "hours, and " + minutes.") 
target_time = datetime.strptime(text_from_user, '%d-%b-%Y')
>>> from datetime import datetime

>>> target_time = '18/03/2022'

>>> target_datetime = datetime.strptime(target_time, '%M/%d/%Y')
>>> current_datetime = datetime.now() # No need to convert it to string

>>> time_left = target_datetime - current_datetime # return `timedelta` object



# returns total seconds 
>>> time_left.total_seconds()
139037207.03403