如何使用PHP从开始时间和结束时间中获取一系列时间,每个时间之间相差一个小时?
P粉994092873
P粉994092873 2024-03-28 08:34:02
[PHP讨论组]

$course_hour = 1; $starttime = '07:00'; $endtime = '16:00';

我希望它是否可以返回如下所示的值数组: 如果

$course_hour = 1;

$return_array = array('07:00 - 08:00', '08:00 - 09:00', '09:00 - 10:00', '10:00 - 11:00', '11 :00 - 12:00', '12:00 - 13:00', '13:00 - 14:00', '14:00 - 15:00', '15:00 - 16:00'); 如果

$course_hour = 1.5;

$return_array = array('07:00 - 08:30', '8:30 - 10:00', '10:00 - 11:30', '11:30 - 13:00', '13 :00 - 14:30', '14:30 - 16:00'); 如果

$course_hour = 2;

$return_array = array('07:00 - 09:00', '09:00 - 11:00', '11:00 - 13:00', '13:00 - 15:00');< /p>

function get_session_times($course_hour, $start_time, $end_time){
    if(strlen($start_time) < 5) $start_time = '0'.$start_time;
    if(strlen($end_time) < 5) $end_time = '0'.$end_time;
    $current_time = date("Y-m-d H:i");
    $session_starttime = date("Y-m-d H:i", strtotime(date("Y-m-d ").$start_time));
    $session_endtime = date("Y-m-d H:i", strtotime(date("Y-m-d ").$end_time));
    $session_starttime_ms = strtotime($session_starttime);
    $session_endtime_ms = strtotime($session_endtime);
    $session_times_array = array();
    for ($i = $session_starttime_ms; $i < $session_endtime_ms; ) { 
         $session_times_array[] = date("H:i", $i)."
"; $i = $i + ($course_hour * 60 * 60); } return $session_times_array; }

P粉994092873
P粉994092873

全部回复(1)
P粉609866533
<?php 
$course_hour = 1.5; // 1 || 1.5 || 2
$starttime = '07:00';
$endtime = '16:00';
 
print_r(get_time_range($course_hour, $starttime, $endtime));

function get_time_range($course_hour, $starttime, $endtime){
  $to_add = '';
  switch($course_hour):
    case 1:
     $to_add = " +1 hours";
     break;
   case 1.5:
     $to_add = " +1 hours 30 minutes";
     break;
   case 2:
     $to_add = " +2 hours";
     break;
   default:
     $to_add = " +1 hours";
     break;
  endswitch;

 // get the total hours
 $from_time = strtotime($starttime); 
 $to_time = strtotime($endtime); 
 $diff_mins = round(abs($from_time - $to_time)/60);
 $diff_hours = $diff_mins/60;

 $hours_arr =[];

 for($i=1; $i<=$diff_hours; $i+= $course_hour):

   $new_end_strtime = strtotime($starttime . $to_add);
   $endtime = date('H:i', $new_end_strtime);

   if($new_end_strtime <= $to_time): // checking the last end time is not greater than defined $endtime
     $str = $starttime . ' - '. $endtime;
     $tmp = strtotime($starttime . $to_add);
     $starttime = date('H:i', $tmp);
     array_push($hours_arr, $str);
   endif;

  endfor;

  return $hours_arr;
}
?>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号