V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qwer666df
V2EX  ›  问与答

有一个业务上的算法思路请教一下!

  •  
  •   qwer666df · 2021-04-23 16:41:51 +08:00 · 689 次点击
    这是一个创建于 1070 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 固定分类是 未开始,已完成。

    2. 中间的阶段是可以动态,不固定数量,所以出现的结果可能会是这种: 未开始、第一阶段、第二阶段、第三阶段、已完成。

    3. 从 Excel 中读出来的数据结构:

    名称 第一阶段开始 第一阶段结束 第二阶段开始 第二阶段结束 第三阶段开始 第三阶段结束
    A101 2020/5/1 2020/5/9 2020/5/6 2020/5/16 2020/5/14 2020/5/20
    A102 2020/5/1 2020/5/9 2020/5/6 2020/5/16 2020/5/14 2020/5/20
    1. 每个阶段的规则定义:

      1. 未开始: 当前时间 小于 第一阶段的开始,这个时间范围都算。
      2. 第一阶段:第一阶段开始 到小于 max(第一阶段结束,第二阶段开始),的时间范围都算。
      3. 第二阶段:max(第一阶段结束,第二阶段开始) 到小于 max(第二阶段结束,第三阶段开始),的时间范围都算。
      4. 第三阶段:max(第二阶段结束,第三阶段开始) 到小于 max(第三阶段结束,第四阶段开始),的时间范围都算。
      5. 后面如果有其他以此类推。
      6. 已完成:当前时间 大于 第三阶段结束(也就是最后一条的结束时间),的时间范围都算。
      7. 如果当阶段是 已完成的前一个,那范围就是,小于 < 当前的结束时间。
    2. 问题就是, 我如何知道,现在数据是处于哪个阶段..

    1 条回复    2021-04-23 18:49:24 +08:00
    dnnta
        1
    dnnta  
       2021-04-23 18:49:24 +08:00
    1. 直接按阶段日期顺序遍历,命中那个就是哪个。数据量不大的话,处理起来还是很快的。
    2. 逻辑不严谨,比如 2020/5/7 不会命中任一阶段
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5289 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:32 · PVG 17:32 · LAX 02:32 · JFK 05:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.