是的,至少有一个很好的理由不这样做:结果实例与两个输入实例完全不同。这很重要吗?我不这么认为——考虑一下date - date会产生{}。在
在我看来:把两个日期加在一起有意义吗?没有
两次相加有意义吗?没有
把日期和时间加在一起有意义吗?是的!在
将日期和时间增量添加到一起有意义吗?也许 吧。在
将时间和时间增量相加有意义吗?也许 吧。在
减法呢减去两个日期有意义吗?对。在
减去两次有意义吗?对。在
从日期中减去时间有意义吗?不。在
从日期中减去timedelta有意义吗?也许 吧。在
从时间中减去timedelta有意义吗?也许 吧。在
按照合理的思路发展:date + time => datetime
date + timedelta => date | datetime or exception or silently drop time portion
time + date => datetime
time + timedelta => time | wrap-around or exception
date - date => timedelta
date - timedelta => date | datetime or exception or silently drop time portion
time - time => timedelta
time - timedelta => time | wrap-around or exception
datetime + timedelta => datetime
datetime - timedelta => datetime
因此,如果是我,我在设计日期、时间、日期时间、时间增量框架,我会允许:
^{pr2}$
对于这些:date +/- timedelta
time +/- timedelta
如果timedelta没有其他类型的类型,我会默认返回相同的类型,如果timedelta确实有其他类型的类型,则会引发一个异常,但是会有一个设置来控制它。另一种可能的行为是删除不需要的部分,因此日期与具有小时的timedelta组合将删除小时并返回日期。在