【发布时间】:2017-06-03 22:05:09
【问题描述】:
想要的结果
我想要一个关联数组,其中包含间隔为 15 分钟的时间范围(在开始时间和结束时间之间)。例如:
[
'2017-01-16' => [ // Start of the week (Monday)
'08:00', // Opening time
'08:15',
'08:30',
// Etc..
'18:00', // Closing time
],
'2017-01-17' => [ // Tuesday
'10:00', // Opening time
'10:15',
'10:30',
// Etc..
'22:00', // Closing time
],
// For every day in the week.
];
我想做的另一件事是:取一个时间范围(例如09:00 - 10:00)并将其从数组中删除(在特定日期键处)
我做的步骤(到目前为止)
我有一个看起来和上面一样的数组。但是.. 它以00:00 开头,以23:45 结尾。使用以下代码(主要来自 Stackoverflow 的另一个问题):
private function generateDateRange(Carbon $start_date, Carbon $end_date)
{
$dates = [];
while ($start_date->lte($end_date)) {
if(! array_key_exists($start_date->format('Y-m-d'), $dates)) {
$dates[$start_date->format('Y-m-d')] = [];
} else {
array_push($dates[$start_date->format('Y-m-d')], $start_date->format('H:i'));
if(in_array($start_date->format('H:i'), $dates[$start_date->format('Y-m-d')])) {
$start_date->addMinutes(15);
} else {
$start_date->addDay();
}
}
}
return $dates;
}
$start = Carbon::now()->startOfWeek();
$end = Carbon::now()->endOfWeek();
$range = $this->generateDateRange($start, $end);
我的问题
如何在 PHP (Laravel) 中做到这一点?我计划通过使用数据库来使这个(更多)动态化。但首先我想有一个工作基础。
有人知道我可以做些什么来达到预期的结果吗?
【问题讨论】:
-
你希望输出是什么样的?
-
作为想要的结果下的数组。它应该以一周中的每一天为键,并且该键包含打开和关闭时间之间的时间范围(间隔为 15 分钟)。这应该是每天的动态(关键)。
-
啊,是的,对不起,我虽然那是你的来源。所以你想传入一个开始日期和时间(例如'2017-01-16 08:00')和结束时间(例如'2017-01-16 18:00')并获得一个每15分钟插槽的数组之间?
-
没错。这应该是每天的动态开盘和收盘范围。
标签: php laravel date time php-carbon