Python中如何将日期对象转换为字符串?运算报错如何解决?
报错翻译与原因分析
报错原文翻译:不支持的操作数类型用于
-运算:datetime.datetime类型和str类型无法直接相减
错误根本原因是你定义的lastUpdate是字符串类型,而now是带UTC时区的datetime对象,Python不允许两种不同类型的变量直接做算术减法运算,你需要先把字符串格式的时间转换为同标准的datetime类型后再进行差值计算。
解决方法
- 调用
datetime.datetime.strptime()方法,按照你字符串的时间格式匹配规则,把字符串时间转成带时区的datetime对象 - 转换完成后两个同类型的datetime对象就可以正常计算时间差,后续你要转成字符串输出的需求也可以正常实现
修正后可运行代码
import json import datetime def lambda_handler(event, context): lastUpdate_str = "2020-09-17 03:59:21+00:00" # 按字符串格式规则转换为带时区的datetime对象 lastUpdate = datetime.datetime.strptime(lastUpdate_str, "%Y-%m-%d %H:%M:%S%z") now = datetime.datetime.now().replace(tzinfo=datetime.timezone.utc) # 正常计算时间差 diff = now - lastUpdate # 字符串拼接输出 print("Now:" + str(now) + " lastUpdate:" + lastUpdate_str) print("时间差值:" + str(diff))
内容的提问来源于stack exchange,提问作者Okan
相关产品推荐
相关产品推荐

