Python中timedelta传入超过86399的seconds参数是否合法?
结论
这种传参方式完全合规,可以在生产环境正常使用。
原因说明
- 你在官方文档看到的
timedelta(seconds=)参数0~86399的取值范围,实际是timedelta实例被创建后,*归一化后的实例属性.seconds*的取值限制,而非构造函数入参的要求。 - Python标准库的
timedelta构造函数本身支持所有时间单位入参传入任意合法整数(支持正、负、超出单位对应上限的数值),内部会自动完成单位换算和归一化处理,这个是明确规定的标准特性,不属于未定义的偶然行为。 - 你的测试结果也符合标准库的设计预期,如果业务场景统一用秒作为单位更方便,不需要强行拆分出
days参数,直接传入大数值的seconds参数是完全合理的。
测试代码参考
nowtime = datetime.now() print(nowtime) # 输出:2021-06-24 15:08:36.048664 plusdays = timedelta(seconds=432000) print(nowtime+plusdays) # 输出:2021-06-29 15:08:36.048664
内容的提问来源于stack exchange,提问作者user4046073
相关产品推荐
相关产品推荐

