如何获取一段时间内的日期列表
给出一个开始时间和一个结束时间,需要列出这个时间段内的日期列表并同时判断是周几。
<?phpnamespace OCA\ElectronicClassAPI\Utils;use OCA\ElectronicClassAPI\Mapper\BaseCalendarMapper;/** * 根据时间转换日历函数的封装 * author: yuxiangShi<18538187569@163.com> * Date: 2021/9/22 11:18 上午 */class TimeBaseUtil{ /** * 根据开始时间和结束时间获取到具体的时间日历列表 * @param string $start_time * @param string $end_time * @return mixed * author: yuxiangShi<18538187569@163.com> * Date: 2021/9/22 11:24 上午 */ public static function getCalendar(string $start_time = '', string $end_time = '') { // 1.根据开始时间和结束时间生成日期列表 $startTime = strtotime($start_time); $endTime = strtotime($end_time); // 2.循环获取具体的时间段 $tmp = []; $count = 0; for ($i = $startTime; $i <= $endTime; $i += (24 * 3600)) { $data['time_stamp_list'] = $i; $data['calendar_list'] = date('Y-m-d', $i); $data['week'] = self::getWeek($i); $count += 1; $data['day'] = $count; $tmp[] = $data; } // 3.从第一周开始计算当前的周数,不足的取整计算 foreach ($tmp as $key => $value) { if ($value['day'] % 7 == 0) { $opeartion = $value['day'] / 7; $tmp[$key]['week_number'] = $opeartion; } else { $opeartion = $value['day'] / 7; $tmp[$key]['week_number'] = ceil($opeartion); // 向上取整 } $tmp[$key]['calendar_start_time'] = $start_time; $tmp[$key]['calendar_end_time'] = $end_time; } return $tmp; } /** * 按照具体的周数换算成星期几 * @param string $timestamp * @return string * author: yuxiangShi<18538187569@163.com> * Date: 2021/9/22 11:22 上午 */ public static function getWeek(string $timestamp = '') { $timestamp = date("w", $timestamp); $str = ''; switch ($timestamp) { case '0': $str .= '7'; break; case '1': $str .= '1'; break; case '2': $str .= '2'; break; case '3': $str .= '3'; break; case '4': $str .= '4'; break; case '5': $str .= '5'; break; case '6': $str .= '6'; break; } return $str; }}
联系客服