如何解决如何在不到30天的日期时间将年,月打印为0?还是一年?
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。