将整数转换为datetime时触发OSError: [Errno 22] Invalid Argument问题排查
解决datetime.fromtimestamp转换自定义整数时的OSError问题
嘿,我一眼就看出问题所在啦——你用错方法啦!datetime.fromtimestamp()这个函数是用来处理Unix时间戳的(也就是从1970年1月1日00:00:00 UTC开始计算的秒数/毫秒数),但你传入的20210805180239这种数字其实是YYYYMMDDHHMMSS格式的时间编码,根本不是Unix时间戳,难怪会抛出无效参数的错误。
那该怎么正确转换呢?咱们得把这个整数先转成字符串,再用datetime.strptime()来按照对应的格式解析,具体看下面修正后的代码:
from datetime import datetime anewvalue = [20210805180238, 20210805180239, 20210805180241] # 先把整数转成字符串,再用strptime按YYYYMMDDHHMMSS格式解析 timestamp = datetime.strptime(str(anewvalue[1]), '%Y%m%d%H%M%S') print(timestamp.strftime('%Y-%m-%d %H:%M:%S'))
简单解释下修正逻辑:
- 第一步:把数组里的整数转成字符串,因为
strptime()需要字符串类型的输入 - 第二步:用
%Y%m%d%H%M%S作为格式匹配符,对应你的数字格式:%Y:4位年份(比如2021)%m:2位月份(比如08)%d:2位日期(比如05)%H:24小时制的小时(比如18)%M:分钟(比如02)%S:秒数(比如39)
- 最后用
strftime()格式化输出你想要的格式就可以了
这样运行后就能得到正确的时间:2021-08-05 18:02:39
内容的提问来源于stack exchange,提问作者Muhammad Asim
相关产品推荐
相关产品推荐

