【问题标题】:loop over start-end time add minutes with next day循环开始结束时间加上第二天的分钟
【发布时间】:2021-02-11 21:26:56
【问题描述】:

我正在尝试将给定时间增加 15 分钟,直到达到结束时间。我一直在查看loop over the time till it reaches end time with specific interval,但此解决方案仅在同一天内有帮助。

如果出现下图就不行了。

$startTime = '16:00';
$endTime = '02:00';

我正在寻找的输出如下:

16:00
16:15
16:30
16:45
17:00
17:15
17...
.....
01:45
02:00

假设现在是 16:13,我该如何从 16:30 开始输出?或者更好的是 30 分钟后,例如 16:45。

感谢任何帮助。

【问题讨论】:

    标签: php datetime


    【解决方案1】:

    我认为下一个解决方案可以提供帮助:

    <?php
    // get current time and round it to next half hour
    $start = (intdiv(time(),(30 * 60)) + 1) * (30*60);
    
    // since intdiv introduced in PHP 7 in previous PHP versoins
    // intval() function can be used instead
    $start = (intval(time()/(30 * 60)) + 1) * (30*60);
    
    $end   = strtotime('02:00');
    
    // if end time less then start add one day
    if ($end < $start) $end += 60 * 60 * 24;
    
    while ($start <= $end) {
    
        echo date('H:i',$start) . PHP_EOL;
    
        // Increment Start date
        $start += (15*60);
    
    }
    

    share PHP code

    【讨论】:

    • 非常感谢您的回答。不幸的是 intdiv 将无法工作,因为我使用的是 php 5.6.40。不使用 intdiv 会给我完全不同的输出。 $x = 时间(); $y = ((30 * 60) + 1) * (30*60); $开始 = $x/$y;遗留的任何替代方案?
    • 在 PHP 5 中使用 $start = (intval(time()/(30 * 60)) + 1) * (30*60); 代替。 phpize.online/…
    猜你喜欢
    • 2023-03-09
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    相关资源
    最近更新 更多