Php 从时间中删除秒并将分钟舍入
我将时间条目存储到一个名为duration的变量中。所以现在如果我记录一个时间条目,它将采用标准格式:ex)12:30:00 我要做的是删除时间条目中的秒部分,并将分钟四舍五入到每15分钟一次。另外,我想删除前面的0,如果时间在10之前 所以09:00:00会变成9点 09:30:00就要到9:30了 所以12:30:00就是12:30 12:08:00应该是12:15 12:34:00将是12:30 ect 以下是我使用的代码:Php 从时间中删除秒并将分钟舍入,php,laravel,datetime,Php,Laravel,Datetime,我将时间条目存储到一个名为duration的变量中。所以现在如果我记录一个时间条目,它将采用标准格式:ex)12:30:00 我要做的是删除时间条目中的秒部分,并将分钟四舍五入到每15分钟一次。另外,我想删除前面的0,如果时间在10之前 所以09:00:00会变成9点 09:30:00就要到9:30了 所以12:30:00就是12:30 12:08:00应该是12:15 12:34:00将是12:30 ect 以下是我使用的代码: $duration = ''; if ($se
$duration = '';
if ($seconds < 0) {
$duration = '-';
$seconds = abs($seconds);
}
$hours = floor($seconds / 3600);
$seconds -= $hours * 3600;
$minutes = floor($seconds / 60);
$seconds -= $minutes * 60;
return $duration . sprintf('%d:%02d:%02d', $hours, $minutes, $seconds);
}
试试这个
$currentTime = strtotime('12:34:00');
echo 'Rounded Up 15 Minutes time: ' . date('H:i',round($currentTime / (15 * 60)) * (15 * 60));
//output - Rounded Up 15 Minutes time: 12:30
如果这
$currentTime = strtotime('12:08:00');
echo 'Rounded Up 15 Minutes time: ' . date('H:i',round($currentTime / (15 * 60)) * (15 * 60));
//output - Rounded Up 15 Minutes time: 12:15
查看演示
对于回合,您可以使用分钟零条件进行检查,如
$currentTime = strtotime('9:00:00');
if(date('i',ceil($currentTime / (15 * 60)) * (15 * 60)) == 00){
echo date('H',ceil($currentTime / (15 * 60)) * (15 * 60));
}
你能提供你得到的输出吗?使用,我认为时区是不同的。我使用了
date()
将使用UTC默认值来确保您的时区为UTC或不同。是的,这是一个时区问题,谢谢。如果时间在10之前,我将如何修改此代码以使其截断为0。我用示例更新了我的OP。请仔细检查我在演示中使用的ceil
,但在回答中它是round
。让我更改演示链接,以便您可以@JetoJust checked检查它。11:44,四舍五入到11:45。老实说,我想做的没问题。我可以编辑OP使事情更清楚。@DilipHirapara我发现代码有问题。我想要它,这样我就可以得到没有前导零的小时数,所以09:00,应该是9:00。由于某些原因,当值在10:00:00之前时,因此当小时数为一位数时,显示的时间为00:00。有没有办法解决这个问题?
$currentTime = strtotime('9:00:00');
if(date('i',ceil($currentTime / (15 * 60)) * (15 * 60)) == 00){
echo date('H',ceil($currentTime / (15 * 60)) * (15 * 60));
}