Par*_*xit 5 php mysql sql datetime group-by
我有2个约会
start datetime = 2013-08-28 17:43:41AND end datetime =2013-08-28 22:23:51
现在我想将开始时间转换为上限15分钟间隔,就像2013-08-28 17:45:00在这种情况下一样,在较低级别15分钟间隔内转换的结束时间相同2013-08-28 22:15:00
然后我想要那个时间之间的15分钟间隔的数组.
例如.对于我们的情况应该是
a[0] = 2013-08-28 17:45:00 a[0] = 2013-08-28 18:00:00 a[1] = 2013-08-28 18:15:00 a[2] = 2013-08-28 18:30:00 a[3] = 2013-08-28 18:45:00 a[4] = 2013-08-28 19:00:00 ......like wise
我希望使用mySql/php,但mysql是优先级,因为数据来自我的数据库.
小智 9
如果您有开始时间和结束时间,请将它们转换为UNIX时间戳.之后,只需创建一个循环,将开始时间增加15分钟并继续运行直到到达结束时间.
像这样的东西:
$array_of_time = array ();
$start_time = strtotime ("2013-08-28 17:45:00");
$end_time = strtotime ("2013-08-28 22:15:00");
$fifteen_mins = 15 * 60;
while ($start_time <= $end_time)
{
$array_of_time[] = date ("Y-m-d H:i:s", $start_time);
$start_time += $fifteen_mins;
}
print_r ($array_of_time);
Run Code Online (Sandbox Code Playgroud)
我已经通过 PHP 和查询从数据库检索开始和结束日期时间解决了这个问题。
$start_datetime = strtotime($start_datetime); //from 2013-08-28 17:43:41 to timestamp
$end_datetime = strtotime("+$duration minutes", $start_datetime); //from 2013-08-28 17:43:41 to timestamp
//loop till start time is less than end time
while ($start_datetime < $end_datetime)
{
//add date as a key in first level array
if(!array_key_exists(date('Y-m-d', $start_datetime), $booking_slot)) {
$booking_slot[date('Y-m-d', $start_datetime)]=array();
}
//add time slot for perticular date's array
array_push($booking_slot[date('Y-m-d', $start_datetime)], date("h:i A", $start_datetime));
//add $interval to find next interval
$start_datetime = strtotime("+$interval minutes", $start_datetime); //slot or interval
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4070 次 |
| 最近记录: |