当我在python中减去两个datetime对象时,它只考虑了时间而不是一天
我有两个日期时间对象当我在python中减去两个datetime对象时,它只考虑了时间而不是一天,python,datetime,Python,Datetime,我有两个日期时间对象 `statrt_time` and `end_time` 我的代码是 if self.book_from and self.book_to: fmt = '%Y-%m-%d %H:%M:%S' s = datetime.strptime(self.book_from,fmt) #start date e = datetime.strptime(self.book_to,fmt) #end date
`statrt_time` and `end_time`
我的代码是
if self.book_from and self.book_to:
fmt = '%Y-%m-%d %H:%M:%S'
s = datetime.strptime(self.book_from,fmt) #start date
e = datetime.strptime(self.book_to,fmt) #end date
diff = e - s
total_seconds=diff.seconds
time_diff = (total_seconds/3600.0)
no_of_units = (time_diff/4)
if(e<s):
self.units = 0
else:
self.units = math.ceil(no_of_units)
如果self.book\u from和self.book\u to:
fmt=“%Y-%m-%d%H:%m:%S”
s=datetime.strtime(self.book_from,fmt)#开始日期
e=datetime.strtime(self.book_to,fmt)#结束日期
diff=e-s
总秒数=差异秒数
时间差=(总秒数/3600.0)
单位数量=(时间差/4)
如果(e使用而不是秒
timedelta.seconds
仅显示差异的“秒”部分,而total_seconds()
以秒为单位显示差异的持续时间。有关详细信息,请参阅
因此,请使用以下命令:
total_seconds=diff.total_seconds()
total_seconds
是一个对象,它使用三个字段存储两个日期时间之间的差异-days
、seconds
和milisonds
。您的代码片段只使用seconds
属性,而不是整个差异。该方法会为您处理这些差异,并返回总的numb值两个数据时间间隔的秒数。我有另一种方法……但有一个解决办法
if self.book_from and self.book_to:
fmt = '%Y-%m-%d %H:%M:%S'
s = datetime.strptime(self.book_from,fmt) #start date
e = datetime.strptime(self.book_to,fmt) #end date
diff = e - s
days=diff.days// convert difference to day instead of seconds//
days_seconds=0
if(days>0): //Checking whether the difference exceeds a day//
days_seconds=days*24*3600 //If so convert it to seconds//
total_seconds=diff.seconds+days_seconds
time_diff = (total_seconds/3600.0)
如果在小时内没有差异,此方法将给出真正的差异,因为本质上您只是在测量日部分和第二部分的差异。哦,对不起,是的,它会起作用,因为timedelta只在日和秒中存储差异。因此在内部,total_seconds()
方法正在执行您在这里所做的操作。