在php中午夜之后两次之间的分钟间隔

问题描述 投票:0回答:1

我两次之间有30分钟的时间间隔,只要两次都在同一天,例如17:00 and 23:00。如果结束时间是午夜之后,我将无法获得间隔,因此17:00 to 01:00不提供任何间隔。

我知道01:00是另一天,但不太确定如何使用动态日期来解决问题。我一直认为current day +1会好起来的,除非在事后才这样做,那么如果有意义的话,那将是额外的一天。

这是我的代码:

$timestamp = time() + 60*60;
$earliest = date("h:i ",$timestamp);
$period = new DatePeriod(
new DateTime($earliest),
new DateInterval('PT30M'),
new DateTime('01:00')
);
foreach ($period as $date) {
echo '<option value="">'.$date->format("H:i").'</option>';
}

因为24:00是00:00,所以我尝试了25:00,但这没用。任何帮助表示赞赏!

php datetime intervals
1个回答
0
投票

您还必须提及确切的日期,而不仅仅是时间作为01:00。因为这样,它假定了当前日期,因此您实际上不能在同一天的17:0001:00之间有一个时间段。以下是您的操作方法:

<?php

$period = new DatePeriod(
                        DateTime::createFromFormat('Y-m-d H:i','2020-04-03 17:00'),
                        new DateInterval('PT30M'),
                        DateTime::createFromFormat('Y-m-d H:i','2020-04-04 01:00')
          );



foreach ($period as $date) {
    echo $date->format("H:i"),PHP_EOL;
}

Demo: https://3v4l.org/5sj9Z

© www.soinside.com 2019 - 2024. All rights reserved.