打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何获取一段时间内的日期列表

如何获取一段时间内的日期列表

给出一个开始时间和一个结束时间,需要列出这个时间段内的日期列表并同时判断是周几。

<?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;
    }}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
字符串处理
批处理计算时间的思路
【MySQL】利用日期函数查询出当天所有的数据
python datetime 操作相关
Windows批处理中获取日期和时间
窗口标题栏显示日期时间 | Titlebar Date Time【窗口标题显示日期时间】2.0.0.1554 绿色版
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服