• 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

如何用python快速的算出两个时间段中重叠的天数

已定时 已固定 已锁定 已移动 Python 开发
4 帖子 2 发布者 1942 浏览
    • 从旧到新
    • 从新到旧
    • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • digitalsatoriD 离线
    digitalsatoriD 离线
    digitalsatori 管理员
    写于 最后由 编辑
    #1

    比如一个时间段是:2018年1月15日到2018年5月10日
    另一个时间段是:2018年3月20日到2018年9月15日
    计算重叠天数

    >>> from datetime import datetime
    >>> from collections import namedtuple
    >>> Range = namedtuple('Range', ['start', 'end'])
    
    
    >>> r1 = Range(start=datetime(2018, 1, 15), end=datetime(2018, 5, 10))
    >>> r2 = Range(start=datetime(2018, 3, 20), end=datetime(2018, 9, 15))
    >>> latest_start = max(r1.start, r2.start)
    >>> earliest_end = min(r1.end, r2.end)
    >>> delta = (earliest_end - latest_start).days + 1
    >>> overlap = max(0, delta)
    >>> overlap
    52
    

    【上海先安科技】(tony AT openerp.cn)

    1 条回复 最后回复
    2
  • 萧 离线
    萧 离线
    萧云飞
    写于 最后由 编辑
    #2

    哈哈哈,大佬这个题是集思广益,我来献下丑:
    0_1517449691859_360桌面截图20180201094659.jpg

    digitalsatoriD 1 条回复 最后回复
    0
  • digitalsatoriD 离线
    digitalsatoriD 离线
    digitalsatori 管理员
    在 中回复了萧云飞 最后由 编辑
    #3

    @萧云飞 感谢提供你的方案,棒!
    解决的思路是类似的,不过兄弟没有考虑当两个时间段没有交集的情况:face_with_stuck-out_tongue_winking_eye:

    【上海先安科技】(tony AT openerp.cn)

    萧 1 条回复 最后回复
    0
  • 萧 离线
    萧 离线
    萧云飞
    在 中回复了digitalsatori 最后由 编辑
    #4

    @digitalsatori 就是,哈哈,被您一说,才发现。这个就只能提前判断是否有交汇了😄

    1 条回复 最后回复
    0

  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。