python datetime 报错OSError: [Errno 22] Invalid argument

Python的datetime模块提供了从时间戳转换为日期的函数,但需要注意时间戳的范围限制,通常在1970年至2038年之间。超出这个范围可能会引发OverflowError。在Python 3.3版后,错误处理更为精确,不再抛出ValueError而是OverflowError。对于2038年后的时间处理,目前尚无确定的解决方案,但预计那时的Python版本将能处理更宽的时间范围。

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

datetime.datetime.utcfromtimestamp()函数的输入数据类型为浮点型,单位为秒。

classmethod date.fromtimestamp(timestamp)

返回对应于 POSIX 时间戳的当地时间,例如 time.time() 返回的就是时间戳。

这可能引发 OverflowError,如果时间戳数值超出所在平台 C localtime() 函数的支持范围的话,并且会在 localtime() 出错时引发 OSError通常该数值会被限制在 1970 年至 2038 年之间。 请注意在时间戳概念包含闰秒的非 POSIX 系统上,闰秒会被 fromtimestamp() 所忽略。

在 3.3 版更改: 引发 OverflowError 而不是 ValueError,如果时间戳数值超出所在平台 C localtime() 函数的支持范围的话,并会在 localtime() 出错时引发 OSError 而不是 ValueError

所以如果设置的时间不在这个范围内就会报错,至于时间到2038之后怎么处理,现在还不知道结论,估计到那时候大家使用的都是新版本的python,也不存在这个问题了。

参考文献:

1.datetime --- 基本日期和时间类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值