当只使用天时,^{
据我所知,timedelta
仅支持天(和周),而relativedelta
添加了对按年、月、周或天定义的期间的支持,以及对年、月或天定义的绝对值的支持。(记住,就这个问题而言,我不必担心小时、分钟或秒)
考虑到我只处理^{timedelta
和relativedelta
之间有什么区别?有什么区别吗?
from datetime import date, timedelta
from dateutil.relativedelta import relativedelta
i = -1 # This could have been any integer, positive or negative
someday = date.today()
# Is there any difference between these two lines?
otherday = someday + timedelta(days=i)
otherday = someday + relativedelta(days=i)
dateutil
是python标准模块的扩展包。正如您所说的,它提供了额外的功能,比如用大于一天的单位表示的时间增量。如果你要问一些问题,比如在我女朋友生日到来之前我能存多少个月,或者这个月的最后一个星期五是什么,那么这个方法很有用?这隐藏了复杂的计算,这些计算是由月份的不同长度或闰年中的额外天数引起的。
就你而言,你只对天数感兴趣。所以最好使用
timedelta
,因为这样可以避免对dateutil
包的额外依赖。一个
relativedelta
比一个timedelta
有更多的参数:你可以用它来计算一个月内的最后一个星期五:
其他答案中没有强调的一个主要区别是,每个时差原语中都存在单数和复数名词。虽然
timedelta
只提供复数名词(例如hours
,days
)来表示相对时差,但relativedelta
也提供单数名词(例如hour
,day
)来表示绝对时间信息。从这两个类的定义中可以清楚地看出:
现在,单数形式到底是做什么的?单数形式创建一个delta,当添加到
datetime
对象时,将datetime
对象中的特定日期/时间原语设置为relativedelta
中提到的日期/时间原语。下面是一个小例子:这可能导致
relativedelta
被用于一些有趣的应用程序,而使用timedelta
实现这些应用程序可能很复杂。一个很快就会想到的是取整。一个有趣的应用:快速舍入
现在我将向您展示
relativedelta
如何在将datetime
对象舍入到最接近的分钟、小时、天等时更具表现力四舍五入到最近的小时:
注意,使用
relativedelta
取整是多么简单:使用
relativedelta
可以轻松实现其他更复杂的取整。但是,请注意,可以通过relativedelta
完成的所有舍入也可以使用datetime
函数和timedelta
完成,只是稍微复杂一些。相关问题 更多 >
编程相关推荐