Php 将时间分割成时间间隔
我有三个输入Php 将时间分割成时间间隔,php,datetime,time,Php,Datetime,Time,我有三个输入 开始时间 结束时间 间隔时间 范例 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=$startTim
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新手
任何人都可以帮我。试试这个:
$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";
}
$startTime=新日期时间(“2012-07-13 01:00:00”);
$endTime=新日期时间(“2012-07-13 01:30:00”);
而($startTime<$endTime){
echo$startTime->format('H:i:s')。-;
echo$startTime->modify(“+10分钟”)->格式('H:i:s')。“\n”;
}
您的代码运行得很好,我刚刚添加了一个变量,用于指定时间间隔并重新设置时间格式,以便与相同。我需要像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);
}
$startTime=strotime(“2012-07-13 01:00:00”);
$endTime=strottime(“2012-07-13 01:30:00”);
$interval=“10”;
$time=$startTime;
虽然($time我认为代码按预期工作……也许您可以像这样重构它,以获得所需的准确输出:
<?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,那么它将只打印开始时间,因为开始时间+60高于结束时间;这是您所期望的吗?$start=DateTime::createFromFormat('Y-m-d H:i:s','2012-07-13 01:00:00',new DateTimeZone('Europe/Berlin');
$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');
}
$end=DateTime::createFromFormat('Y-m-dh:i:s','2012-07-13 01:30:00',新日期时区('Europe/Berlin');
而($start格式('H:i:s'),“\n”;
$start->modify(“+10分钟”);
}
您缺少最后一个可能的输出,因为这将产生与结束时间相同的值。
a
应该是a尝试使用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'));
}
?>
您可以通过和来实现这一点
这是怎么不适合您的?输出格式是否不正确?
$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') .", ";
}