首页 > 解决方案 > Python计算两个日期之间的时间范围长度

问题描述

我正在寻找模块ChronoUnit

java.time.temporal.ChronoUnit 

在 Python 中实现,在 Java 8 中找到。

这个模块之所以有用,是因为它包含一个计算任意日期之间的天、月、年等的过程。

PS:在python中实现日期计算,可能会导致很多问题,因为有很多我现在根本没有时间考虑的极端情况,所以请在回答时保持建设性。

编辑:我认为我的问题还不够清楚,但我想要完成的是能够实际从另一个日期中减去一个日期,从而得到两者之间的月、日、年等。

根据juanpa.arrivillaga的评论,箭头库提供了一个有用的方法,它提供了一个几乎相似的功能,我想我现在会回答我自己的问题。

标签: javapythonchronounit

解决方案


感谢@junpa.arrivillaga,我发现借助箭头库,该过程可能很容易在python中实现。

要使用它的api如下:

arrow.Arrow.range('hour', start, end)

Python 中的最终方法是:

'''
    Computes day, month, year s 
    between two dates.
    frame - time frame 
    start - date start 
    end - date finish
    This method only works if the generated timeframe between to dates 
    is finite, as Arrow.range returns a generator!
'''
def count_frame_between_dates(frame, start, end):
    return len(list(arrow.Arrow.range(frame, start, end)))

编辑: Arrow.range 返回一个生成器,理论上您无法计算生成器的长度,但是如果您确定您使用的生成器返回的是有限的元素集,那么您可以将此生成器转换为列表用来len()计算它的长度。

谢谢大家。


推荐阅读