当我们使用Django的datetime模块做时间差时,我们可能会报出 TypeError: can’t subtract offset-naive and offset-aware datetimes
1、原因
第一种情况,做时间差的两个变量不是datetime类型,这时需要做一些转换
第二种情况,两个变量的时区不一致
2、解决方法
import datetime
from pytz import timezone
# 中国上海时区
cst_tz = timezone('Asia/Shanghai')
# 美国时区
utc_tz = timezone('UTC')
starttime = datetime.datetime.now().replace(tzinfo=cst_tz)
endtime = datetime.datetime.now().replace(tzinfo=utc_tz)
# 获得相差的时间
interval = (endtime - starttime).seconds
print(interval)
# 这样的方法就会报错
# TypeError: can't subtract offset-naive and offset-aware datetimes
# 解决方法 换成同一个时区
starttime = datetime.datetime.now().replace(tzinfo=cst_tz)
endtime = datetime.datetime.now().replace(tzinfo=cst_tz)
# 这样就解决问题了
interval = (endtime - starttime).seconds
print(interval)
0