我有三个输入
示例
start time - 01:00
end time - 01:30
intervel-time - 10 min
我需要输出像01:00,01:10,01:20,01:30
我已经尝试过以下代码,但它不起作用。
<?php
$startTime=strtotime("2012-07-13 01:00:00");
$endTime=strtotime("2012-07-13 01:30:00");
$time=$startTime;
while ($time < $endTime) {
echo date('H:i:s', $time) . " - ";
$time = strtotime('+10 minutes', $time);
echo date('H:i:s', $time) . "<br>";
}
?>
当我尝试使用开始和结束时间间隔为60分钟时,上面的代码就可以了。
我是PHP的新手。
任何人请帮帮我。
答案 0 :(得分:3)
试试这个:
$startTime = new DateTime("2012-07-13 01:00:00");
$endTime = new DateTime("2012-07-13 01:30:00");
while ($startTime < $endTime) {
echo $startTime->format('H:i:s') . ' - ';
echo $startTime->modify('+10 minutes')->format('H:i:s') . "\n";
}
<强> demo 强>
答案 1 :(得分:3)
尝试使用DateTime和DateInterval:
<?php
$startTime = new DateTime('2012-07-13 01:00:00');
$endTime = new DateTime('2012-07-13 01:30:00');
while($startTime <= $endTime) {
echo $startTime->format('H:i:s') . ' ';
$startTime->add(new DateInterval('PT10M'));
}
?>
<强> Eval-Demo 强>
答案 2 :(得分:2)
你的代码工作得很好,我刚刚添加了一个变量,它记录了间隔并重新格式化了时间,以便与I need the output like 01:00, 01:10, 01:20, 01:30
相同,最后一件事是你应该首先打印时间增量就是这样。
以下是代码:
$startTime=strtotime("2012-07-13 01:00:00");
$endTime=strtotime("2012-07-13 01:30:00");
$interval = "10";
$time=$startTime;
while ($time <= $endTime) {
echo date('H:i', $time) . "<br>";
$time = strtotime('+'.$interval.' minutes', $time);
}
答案 3 :(得分:2)
我认为代码按预期工作...也许你可以像这样重构它以获得你需要的确切输出:
<?php
$startTime=strtotime("2012-07-13 01:00:00");
$endTime=strtotime("2012-07-13 01:30:00");
$intervel="60";
$time=$startTime;
echo date('H:i', $time);
$time = strtotime('+'.$intervel.' minutes', $time);
while ($time <= $endTime) {
echo "," . date('H:i', $time);
$time = strtotime('+'.$intervel.' minutes', $time);
}
?>
如果您将间隔从10更改为60,那么它将仅打印开始时间,因为start_time + 60高于结束时间;这是你期望的吗?
答案 4 :(得分:2)
您可以使用modify,DateInterval和DatePeriod实现这一目标。
$startTime = new DateTime('2012-07-13 01:00:00');
$endTime = new DateTime('2012-07-13 01:30:00');
$endTime = $endTime->modify( '+1 minute' );
$interval = new DateInterval('PT10M');
$daterange = new DatePeriod($startTime, $interval ,$endTime);
foreach($daterange as $res) {
echo $res->format('H:i') .", ";
}
答案 5 :(得分:1)
$start = DateTime::createFromFormat('Y-m-d H:i:s', '2012-07-13 01:00:00', new DateTimeZone('Europe/Berlin'));
$end = DateTime::createFromFormat('Y-m-d H:i:s', '2012-07-13 01:30:00', new DateTimeZone('Europe/Berlin'));
while($start <= $end) {
echo $start->format('H:i:s'), "\n";
$start->modify('+10 minutes');
}
您错过了最后一个可能的输出,因为它会产生与您的结束时间相同的值。
a < b
应该是a <= b