问题描述
from datetime import datetime
x = datetime(2020,9,8,19,42,39,264658) - datetime.fromtimestamp(1598192097.728026)
print(x.year) or (x.month) #AttributeError: 'datetime.timedelta' object has no attribute 'year'
我如何将月份,年份设为0?有没有使用例外的想法吗?
解决方法
您的x变量没有属性年或月,此处x存储两次只能返回差值的差。您已经对二者执行了算术运算,并且x是称为date.timedelta的类日期类型。根据您的需求,您希望它返回零年零零月。您可以将x转换为字符串,并使用if语句检查年份和月份。
from datetime import datetime
x = datetime(2020,9,8,19,42,39,264658) -
datetime.fromtimestamp(1598192097.728026)
print(type(x))
print(x)
if 'month' in str(x):
if 'year' in str(x):
print(x)
else:
print(f'0 years {x}')
else:
if 'year' in str(x):
print(x)
else:
print(f' 0 years 0 months {x}')
,
除了'datetime.timedelta'对象没有属性'year'-请注意,时间跨度大于一周是不明确的;例如一个月中的天数会有所不同。 您可以在这里使用dateutil's relativdelta:
from datetime import datetime
from dateutil.relativedelta import relativedelta
timestamp = 1598192097.728026
dtobj = datetime(2020,264658)
x = relativedelta(dtobj,datetime.fromtimestamp(timestamp))
print(x.years,x.months)
# 0 0