PHP生成从当前时间到午夜的15分钟整间隔时间序列问题
搞定15分钟整间隔时间生成的问题
嘿,我明白你遇到的麻烦了——你的代码输出11:28am、11:43am这类非整15分钟的时间,核心原因是起始时间没有对齐到15分钟的整点。比如当前时间是11:28,直接从这个点开始加15分钟,结果肯定是错位的。
要解决这个问题,我们只需要先把起始时间调整到当前时间之后的第一个15分钟整点,之后再按15分钟的间隔递增到午夜就行。
下面是修正后的代码:
// 获取当前时间的时间戳 $currentTime = strtotime(date("d-m-Y h:i:s")); // 计算需要加多少分钟才能到达下一个15分钟整点 // 原理:用当前时间距离当天0点的秒数,除以900秒(15分钟)取余,算出离下一个整点差多少秒,再转成分钟 $remainingSeconds = $currentTime % (15 * 60); $minutesToAdd = (15 - ($remainingSeconds / 60)) % 15; $start = strtotime("+{$minutesToAdd} minutes", $currentTime); // 设置结束时间为当天午夜 $end = strtotime('midnight'); $range = array(); while ($start <= $end) { echo date('h:ia', $start) . "<br/>"; $start = strtotime('+15 minutes', $start); }
关键逻辑说明:
$currentTime % (15 * 60):算出当前时间距离最近的15分钟整点还差多少秒(15 - ($remainingSeconds / 60)) % 15:把秒数转成分钟,计算需要加多少分钟才能对齐到15分钟整点;用%15是为了避免当前已经是整点时,错误地加15分钟- 调整后的
$start就是第一个符合要求的15分钟整点,之后每次加15分钟,就能得到所有你想要的时间点了
这样修改后,你就能得到像11:30am、11:45am、12:00pm这类符合要求的时间,一直到当天午夜。
内容的提问来源于stack exchange,提问作者usertest
相关产品推荐
相关产品推荐

