如何找出日期和时间的区别?

2024-10-05 11:05:07 发布

您现在位置:Python中文网/ 问答频道 /正文

from datetime import *
from time import *

release = "15-07-2015 23:59:59"
now = datetime.now()

currentTime = (now.strftime("%d-%m-%Y %H:%M:%S"))
release = datetime.strptime(release, "%d-%m-%Y %H:%M:%S")


currentTime = datetime.strptime(currentTime, "%d-%m-%Y %H:%M:%S")

diff = release - currentTime

(diff.strftime("%m Months %dDays %Y Years %H Hours %M Minutes %S Seconds")) 

这就是我一直在做的。。。我已经试了很长时间让它正常工作,但我只能得到一个错误说:

AttributeError: 'datetime.timedelta' object has no attribute 'strftime'

谢谢你的帮助。你知道吗


Tags: fromimportdatetimereleasetimediffnowhours
3条回答

您可以使用dateutil.relativedelta

from dateutil import relativedelta
diff = relativedelta.relativedelta(release, currentTime)

print("{} Months {} Days {} Years {} Hours {} Minutes {} Seconds".format(
            diff.months,diff.days,diff.years,
            diff.hours, diff.minutes,diff.seconds))

3 Months 2 Days 0 Years 10 Hours 37 Minutes 25 Seconds

如果没有安装,可以使用pip安装:

  pip install python-dateutil

如果您不想使用dateutil,则需要编写一个自定义的strftime,如strftimedelta和@abarnet建议的那样,只使用(天、小时、秒)ifro

def strftimedelta(tdelta, fmt):
    d = {"days": tdelta.days}
    d["hours"], rem = divmod(tdelta.seconds, 3600)
    d["minutes"], d["seconds"] = divmod(rem, 60)
    return fmt.format(**d)

strftimedelta(diff, "{days} days {hours} hours {minutes} minutes {seconds} seconds")

'93 days 6 hours 19 minutes 3 seconds'

问题正是它所说的:^{}对象没有strftime方法。如果要格式化timedelta,必须手动进行。(或者使用提供更多功能的第三方库。)

另外,请注意,您要查找的特定输出甚至没有真正意义。时间增量不做月和年,只做天和秒,因为月和年没有意义。无论什么时候开始计算,35天都是35天,但是1个月5天可能是33天到36天,所以这不是一个一致的时间差。你知道吗

相关问题 更多 >

    热门问题