根据时间间隔来计算当前时间为设定的时间间隔的第几次,并返回当前间隔的开始时间

admin 2024-11-03 02:25:51 71

<?php
    /**
     * 根据时间间隔和 时间(13:23:20) 计算出当前时间(或指定时间)为今天的第几次
     * @param int $frequency 单位分 例如 5
     * @param string|null $time 例如 13:23:20
     * @return array|bool
     */
   function calculateIndex(int $frequency, string|null $time = null): array|bool
    {
        if ($frequency <= 0) {
            return false;
        }

        try {
            $time = $time === null ? new \DateTime() : new \DateTime($time);
        } catch (Exception $e) {
            // 处理时间格式错误的情况
            return false;
        }

        // 计算从00:00:00开始的总分钟数
        $minutes = (int)$time->format('i') + (int)$time->format('H') * 60;
        // 计算当前时间是第几次间隔,假设间隔为5,那么00:05:00是算做第2次,那么采用舍去法取整后再+1就是我们要的结果
        $index = (int)floor($minutes / $frequency) + 1;

        // 计算当前次数的开始分钟数
        $start_minutes = ($index - 1) * $frequency;
        // 创建一个新的DateTime对象,表示当前次数的开始时间
        $start_date_time = (clone $time)->setTime(0, 0)->add(new \DateInterval("PT{$start_minutes}M"));

        // 返回结果数组
        return [
            'time_at' => $time->format('Y-m-d H:i:s'),
            'time' => $time->getTimestamp(),
            'times' => $index,
            'start_at' => $start_date_time->format('Y-m-d H:i:s'),
            'start_time' => $start_date_time->getTimestamp(),
        ];
    }
最后于 2天前 被admin编辑 ,原因:
可爱猫?Telegram电报群 https://t.me/ikeaimao

社区声明 1、本站提供的一切软件、教程和内容信息仅限用于学习和研究目的
2、本站资源为用户分享,如有侵权请邮件与我们联系处理敬请谅解!
3、本站信息来自网络,版权争议与本站无关。您必须在下载后的24小时之内,从您的电脑或手机中彻底删除上述内容
最新回复 (0)

您可以在 登录 or 注册 后,对此帖发表评论!

返回