我两次之间有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,但这没用。任何帮助表示赞赏!
您还必须提及确切的日期,而不仅仅是时间作为01:00
。因为这样,它假定了当前日期,因此您实际上不能在同一天的17:00
和01: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