gpt4 book ai didi

python - 为什么 date + timedelta 变成日期,而不是日期时间?

转载 作者:IT老高 更新时间:2023-10-28 21:03:00 26 4
gpt4 key购买 nike

在 Python 中,在混合类型数字的运算中,较窄的类型是 widened to that of the other ,如int + floatfloat:

In [57]: 3 + 0.1
Out[57]: 3.1

但是对于 datetime.date,我们有 datetime.date + datetime.timedeltadatetime.date , 不是 datetime.datetime:

In [58]: datetime.date(2013, 1, 1) + datetime.timedelta(seconds=42)
Out[58]: datetime.date(2013, 1, 1)

为什么拓宽推理适用于数字,而不适用于date/datetime/timedelta

(背景:我正在为一种文件格式编写一个读取例程,其中一个字段是年份,一个字段是一年中的一天,一个字段是毫秒-自午夜以来。当然,简单而明确的解决方案是datetime.datetime(2013, 1, 1, 0, 0, 0) + datetime.timedelta(seconds=42),但同样可以认为应该重写 3 + 0.1 as 3.0 + 0.1)

最佳答案

timedelta 对象不存储有关它是否仅涉及日期或时间的任何信息。 (小时/分钟/秒/微秒数为0的事实可能只是巧合!)

因此,假设我们有人只想操纵日期而忽略时间,她会执行 my_new_date = my_old_date + timedelta(days=1) 之类的操作。当她发现 my_new_date 现在是 datetime 对象而不是 date 对象时,她会感到非常惊讶和恼火。

关于python - 为什么 date + timedelta 变成日期,而不是日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37165952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com