1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

[Python] python date interval intersection

Discussão em 'Python' iniciado por Stack, Agosto 26, 2025.

  1. Stack

    Stack Membro Participativo

    As a matter of general interest I'm wondering if there's a more elegant/efficient way to do this. I have a function that compares two start/end tuples of dates returning true if they intersect.

    from datetime import date
    def date_intersection(t1, t2):
    t1start, t1end = t1[0], t1[1]
    t2start, t2end = t2[0], t2[1]

    if t1end < t2start: return False
    if t1end == t2start: return True
    if t1start == t2start: return True
    if t1start < t2start and t2start < t1end: return True
    if t1start > t2start and t1end < t2end: return True
    if t1start < t2start and t1end > t2end: return True
    if t1start < t2end and t1end > t2end: return True
    if t1start > t2start and t1start < t2end: return True
    if t1start == t2end: return True
    if t1end == t2end: return True
    if t1start > t2end: return False


    so if:

    d1 = date(2000, 1, 10)
    d2 = date(2000, 1, 11)
    d3 = date(2000, 1, 12)
    d4 = date(2000, 1, 13)


    then:

    >>> date_intersection((d1,d2),(d3,d4))
    False
    >>> date_intersection((d1,d2),(d2,d3))
    True
    >>> date_intersection((d1,d3),(d2,d4))
    True


    etc.

    I'm curious to know if there's a more pythonic/elegant/more efficient/less verbose/generally better, way to do this with maybe mxDateTime or some clever hack with timedelta or set()?

    An alternative and useful form would be for the function to return a start/end tuple of the intersection if one is found

    Thanks

    Continue reading...

Compartilhe esta Página