问题描述
import datetime
print(datetime.datetime.fromtimestamp(0))
报错
OSError: [Errno 22] Invalid argument
这是一个 Windows 下 Python 3.6.4 的 BUG
解决方案
- 升级Python版本
- 当时间戳大于一天即86400时正常,否则设置时区
import pytz
import datetime
def timestamp_to_datetime(t):
"""时间戳转日期时间"""
if t >= 86400:
return datetime.datetime.fromtimestamp(t)
else:
# return datetime.datetime.fromtimestamp(t, pytz.timezone('Asia/Shanghai')).replace(tzinfo=None) # 中国时区
return datetime.datetime.fromtimestamp(t, pytz.timezone('UTC')).replace(tzinfo=None) # 世界标准时间
print(timestamp_to_datetime(0))
print(timestamp_to_datetime(1))
print(timestamp_to_datetime(86400))
# 1970-01-01 00:00:00
# 1970-01-01 00:00:01
# 1970-01-02 08:00:00
在线测试
测试站点
import platform
import datetime
print(platform.system())
print(platform.python_version())
print(datetime.datetime.fromtimestamp(0))