【问题标题】:How to split opening hours into blocks of 30 minutes?如何将开放时间分成 30 分钟的块?
【发布时间】:2018-02-07 22:57:51
【问题描述】:

我目前正在开发一个应用程序来预约理发师。我正在使用 fullcalendar 进行约会,并且我正在尝试将营业时间分成单独的小时或 00:30 分钟的块。我的数据库表包含一个“开始”和“结束”时间,例如 09:00 到 18:00。我在考虑一个while循环,但现在不知道如何开始。它必须是某种数组。对此有什么想法吗?

Monday ['0' => '09:00',
        '1' => '09:30',
        '2' => '10:00',
       ];
Tuesday  ['0' => '09:00',
          '1' => '09:30',
          '2' => '10:00',
         ];

Table structure Appointments Table structure Business_hours

【问题讨论】:

  • 你能详细解释一下这个数据结构将如何使用吗?
  • 客户可以在查看可用时间的情况下进行预约。此可用时间基于企业的营业时间。因此,当企业从 09:00 到 18:00 营业时,应该有一个可用时间列表,例如:09:00、09:30、10:00、10:30 直到结束时间 18:00。当客户选择一个时间时,它不应再出现在可用列表中。

标签: jquery arrays laravel while-loop fullcalendar


【解决方案1】:
 <?php
 function get_minutes ( $start, $end ) { 

    while ( strtotime($start) <= strtotime($end) ) { 
   $minutes[] = date("H:i:s", strtotime( "$start" ) ); 
    $start = date("H:i:s", strtotime( "$start + 30 mins")) ;     
    } 
 return $minutes; 
} 

示例

$minutes = get_minutes('08:00', '10:00'); 
foreach($minutes as $minute) { 
echo $minute .'<br />'; 
}
?> 

【讨论】:

  • 谢谢,这是我一直在寻找的东西,它就像一个魅力。另外一个问题我还需要一个想法来隐藏已经预订的时间。我有一个约会表的行:开始日期,结束日期,如 2017-06-15 13:37:00。如何隐藏预订的时间?
  • 这里有一个假设,即数据库中的营业时间将始终是尖峰时间或半小时。如果营业时间可以定义为:09:15 - 17:30,那么这段代码需要处理这种边缘情况
  • 它取决于您的表结构,然后我们可以进行查询。如果我能看到你的表结构
  • @Jarek.D 只能添加半小时的尖峰时间。
【解决方案2】:

如果这些是要预订的时间段,您最好使用表示这些时间段的数据结构,如下所示:

Array('2017-01-01' => ('slot_id' => 'Dgf67654' ,
                       'from' => '09:00', 
                       'to' => '09:30'),
                      ('slot_id' => 'dsff7676', 
                       'from' => '09:30', 
                       'to' => '10:30'),
                       ...
)

并调整上面提出的 get_minutes 以生成这种结构。这种数据结构可供预订代码使用

【讨论】:

    猜你喜欢
    • 2016-05-05
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多