import datetime
birthday = datetime.datetime(1996,8,15)
differnce = datetime.datetime.now() - birthday
#This returns a timedelta object -> datetime.timedelta(7629, 36148, 156646)
现在我想精确转换timedelta对象的年,月,日和秒。 我知道我可以做的就像差异。日期// 365可以获得多年等等...... 是否有任何其他方式或方法来转换此timedelta对象 准确,轻松地分年,月,日和分钟?
答案 0 :(得分:1)
我想你可能想要使用dateutil.relativedelta
。这是一篇SO帖子,解释了如何使用它:
如果这不是你想要的,那么在你的问题中提供一些示例输出可能会有所帮助。
答案 1 :(得分:1)
添加问题评论timedelta
会为您提供days
和seconds
。因此,如果您想计算年份,则应执行一些简单的算术计算。这是计算年份的简单方法。一些代码添加您给定的代码。
import datetime
import math
birthday = datetime.datetime(1996,8,15)
differnce = datetime.datetime.now() - birthday
year = differnce.days//(365.25)
month = (differnce.days-year*365.25)//(365.25/12)
day = ((differnce.days-year*365.25) - month*(365.25/12))
print('Years=',int(year),' Months=',int(month), ' Days=',int(math.ceil(day)))
答案 2 :(得分:0)
您可以使用此功能:
import datetime
import calendar
def difference(start, end):
years = end.year - start.year
months = end.month - start.month
days = end.day - start.day
hours = end.hour - start.hour
minutes = end.minute - start.minute
seconds = end.second - start.second
if seconds < 0:
minutes -= 1
seconds += 60
if minutes < 0:
hours -= 1
minutes += 60
if hours < 0:
days -= 1
hours += 24
if days < 0:
months -= 1
days += calendar.monthrange(start.year, start.month)[1]
if months < 0:
years -= 1
months += 12
return {
'years': years,
'months': months,
'days': days,
'hours': hours,
'minutes': minutes,
'seconds': seconds
}
birthday = datetime.datetime(1996,8,30)
diff = difference(birthday, datetime.datetime.now())
print(diff)
这计算两个日期之间的年份(包括闰年)。
天数的差异是天数的净差异,或者 - 如果当前日期的天数小于出生日期 - 则将出生月份剩余的天数添加到当天的号码。这可能有点武断。假设明天是我的生日(并且生日不在该月的第一天),那么输出将按预期的那样具有11个月,但是对于天组件,则为27,28,29或30,具体取决于天数出生月份......