Python中Unix时间戳转换报错:year 50251 is out of range问题排查
问题解决:Unix时间戳转换报错“year 50251 is out of range”
嘿,这问题我太熟啦!你踩了一个新手常犯的时间戳单位坑:
你的时间戳1523620800000是毫秒级的(13位数字),但Python的dt.datetime.utcfromtimestamp()函数默认只认秒级的Unix时间戳(10位数字)。直接把毫秒数传进去,Python会把它当成秒数计算,算出来的年份自然就跑到50251年了,这就是报错的根源。
修复方法很简单:
把你的毫秒时间戳除以1000,转换成秒级时间戳再传入函数:
# 假设timestamp是你拿到的1523620800000 frmt_date = dt.datetime.utcfromtimestamp(timestamp / 1000).strftime("%Y/%m/%d %H:%M")
验证一下:
1523620800000 / 1000 = 1523620800,这个秒级时间戳转换后就是2018/05/17 17:10,和你在验证网站上的结果完全一致。
小提示:
如果是在Python 2环境下,记得用timestamp / 1000.0来确保得到浮点数(避免整数除法截断),Python 3里直接用/就没问题啦。
内容的提问来源于stack exchange,提问作者Bryan Downing
相关产品推荐
相关产品推荐

