datetime.datetime.fromtimestamp(0) 报错 OSError: [Errno 22] Invalid argument

本文探讨了在Windows环境下Python 3.6.4中遇到的时间戳转换为datetime对象时的OSError:[Errno 22] Invalid argument问题,提供了解决方案,包括升级Python版本以及针对特定时间范围设置时区。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

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




在线测试

测试站点

  1. Python3 在线工具 | 菜鸟工具
  2. Online Python Compiler (Interpreter)
import platform
import datetime

print(platform.system())
print(platform.python_version())
print(datetime.datetime.fromtimestamp(0))




参考文献

  1. Python 3.6 datetime.fromtimestamp throws error when given 0
  2. python 时间戳转datetime 报错 OSError: [Errno 22] Invalid argument
  3. python - How can I remove a pytz timezone from a datetime object?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XerCis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值