Python 与日期时间问题斗争

Python 与日期时间问题斗争,python,python-3.x,Python,Python 3.x,请容忍我,因为我还是个新手。我只是想减去两个日期,得到两个日期之间的天数,但计算不太正确。这是我的部分代码给我带来的问题,正如你所看到的,我添加了额外的行,只是为了帮助我确保事情进展顺利 days = date2 - date1 print(type(days)) # // for debugging print(days) # // for debugging list3.append(days) print(type(lis

请容忍我,因为我还是个新手。我只是想减去两个日期,得到两个日期之间的天数,但计算不太正确。这是我的部分代码给我带来的问题,正如你所看到的,我添加了额外的行,只是为了帮助我确保事情进展顺利

days = date2 - date1
        print(type(days))  # // for debugging
        print(days)  # // for debugging
        list3.append(days)
        print(type(list3))  # // for debugging
        print(list3)  # // for debugging
        print('The number of days between the two dates is', days)
这是结果

<class 'datetime.date'>
<class 'datetime.timedelta'>  ***<--needs to be string i think***
365 days, 0:00:00             ***<-- want just to print 365***
<class 'list'>
[datetime.timedelta(days=365)]   ***<-- needs to be a normal list format i think [365, 133] etc..*** 
The number of days between the two dates is 365 days, 0:00:00  ***<-- don't need time formatting***

*** 也许这样行得通:

将熊猫作为pd导入
日期1='2010-09-01'
日期2='2010-10-22'
mydates=pd.date_range(date1,date2)。tolist()列出两个日期之间的日期
ndays=len(mydates)
打印('两个日期之间的天数为',整数(星期日),'天')

在这里尝试一下,并让我知道这是否适合您

from datetime import date

d0 = date(2020, 8, 18)
d1 = date(2020, 9, 26)
delta = d1 - d0
print(delta.days) # // for debugging obv :P
list3.append(delta.days) ## // notice .days here 
print(list3)  # // for debugging obv :P

在回答这个问题时,我们经历了很多假设

您可以通过以下方式实现它。在这里,我假设您输入的日期将是字符串格式的(您在问题中没有给出任何相关信息)

您可以按以下方式使用上述程序

time_diff("2019-10-05 00:00:00","2019-10-10 00:12:00")
这会回来的

datetime.timedelta(days=-6,seconds = 85680)
您可以使用上述对象的
.days
方法获得
天数的确切数字


如果日期时间输入的格式不同,则可以编辑
FMT
变量,如中所述

您尚未显示如何初始化
date1
date2
print(days.days)
将时间增量格式化为没有时间的天数。欢迎使用stackoverflow。请更正您的代码样式并提供date1和date2初始化尝试
list3.append(days.days)
@JoshuaSchlichting“将熊猫作为pd导入”,以及您如何获得熊猫,然后询问“pip3安装熊猫”,然后将其添加到您的答案中。您的答案不完整,未运行代码。哦,对不起,我假设您正在使用dataframe。@d-coder提供的答案也应该如此!我完成了代码,因此更容易理解。对不起,这是我来这里的第一天(当一个问题不涉及外部进口时,不要在回答中使用它们。当然,你可以将其作为备选方案。
datetime.timedelta(days=-6,seconds = 85680)