如何创建时间范围列表?

时间:2019-02-14 17:40:15

标签: php laravel time range schedule

我正在尝试建立一种能够在时间范围内前进和后退的方法。

我正在为作品的生产车间创建一个简单的显示器。每次用户扫描条形码时,我们的ERP系统都会生成一个序列号。为了跟踪一天中的进度,他们想要一个显示屏幕,该屏幕将显示当天处理了多少个序列号(因此,有多少个小部件)。显示屏还将显示上一个班次的小部件。因此,在任何给定时间查看显示,您都会看到当前班次的进度,然后是前一个班次的总计。

我们整个星期进行3次正常轮班。第一班6am至2pm,第二班2pm至10pm,第三班10pm至6am。然后,在每个周末的两天,我们都有一个从上午6点至下午6点的周末班次。

我现在有一条面条面条,上面有if / else语句,可以使它真正起作用,但是我真的很想清理它并使其更易于长期维护。

所以我们说这是星期一第一班。我想获取星期一第一班的总数,但我也想向后退一班,回到周末班,并显示这些总数。周末的轮班确实是一个循环,这是因为现在我必须注意星期几。三班制也有点让人不安,因为它跨越了多个日期。有没有一种干净的方法来进行设置?那里的图书馆可以让我轻松定义这些东西吗?

希望这很有道理。很高兴澄清我所缺少的任何东西。预先感谢您的指导!

2 个答案:

答案 0 :(得分:0)

也许shifts资源会有用。

  1. 使用shifts创建一个id, start_date, end_date, shift_type,...

  2. 扫描条形码时:

    • 如果已经创建了当前班次,请为条形码行分配shift_id
    • 如果不是,请创建移位行,并为条形码行分配shift_id

好处:

  • 非常简单快速的查询即可获取所需的结果

  • 如果轮班更改(开始时间,结束时间...)仍然有效(唯一需要的更改是在创建轮班行的方法上)

  • 比较班次结果将非常容易

答案 1 :(得分:0)

您是否尝试过使用CarbonPeriod?请注意,Carbon已包含在Laravel中,因此无需通过Composer进行添加。