首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我在python中减除两个datetime对象时,它只考虑时间而不占用一天。

当我在python中减除两个datetime对象时,它只考虑时间而不占用一天。
EN

Stack Overflow用户
提问于 2016-04-13 05:43:43
回答 3查看 96关注 0票数 4

我有两个约会时间对象

代码语言:javascript
复制
`statrt_time` and `end_time`

我的代码是

代码语言:javascript
复制
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)

在这里,当我在同一天内减去时间时,它给出了正确的差别。但是,当日期改变时,它不是计算日差,而是只计算时差。怎样才能把日差也加进去?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-13 05:47:07

使用total_seconds()而不是seconds

timedelta.seconds只显示差异的“第二”部分,而total_seconds()则显示差的持续时间(以秒为单位)。有关更多详细信息,请参阅Mureinik's answer

所以,用这个:

代码语言:javascript
复制
total_seconds=diff.total_seconds()
票数 6
EN

Stack Overflow用户

发布于 2016-04-13 05:52:34

total_seconds是一个timedelta对象,它使用三个字段( dayssecondsmiliseconds )存储两个日期时间之间的差异。您的代码片段只是使用seconds属性,而不是使用整个差异。total_seconds()方法为您处理这个问题,并返回两个数据之间的总秒数。

票数 3
EN

Stack Overflow用户

发布于 2016-04-18 06:25:25

我有另一种方法..。但是在附近工作..。

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36589557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档