背景:
从数据库获取了工夫
cursor = db.cursor()
cursor.execute('select ts from xxx order by id desc limit 1')
data1 = cursor.fetchall()
my_time = data1[0][0]
my_time
是个 datetime 类型
须要和以后工夫作比照
cn_zone = pytz.timezone('Asia/Shanghai')
def get_cur_time():
return datetime.datetime.now(cn_zone)
# 间接减会报错
# can't subtract offset-naive and offset-aware datetimes
get_cur_time() - my_time
思考转换成 timestamp 再计算
大坑开始!my_time
因为开始是个无时区的 datetime,无论用各种办法都无奈扭转其 timestamp 的值。
猜想是其生成的时候,timestamp 曾经确定了,后续无奈扭转。
另:
转换时区的时候有另一个坑:
https://www.cnblogs.com/ajianbeyourself/p/11982529.html
上面这样用,会把时区变为 LMT+0806(多八小时零六分)
cn_zone = pytz.timezone('Asia/Shanghai')
my_time.replace(cn_zone)
正确用法:
用 datetime 相减,但要用 localize
来纠正
ltime = cn_zone.localize(my_time)
# 这样再减就能够了
(get_cur_time() - ltime).seconds