为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 计算中四舍五入到最接近 1 的值

PHP 计算中四舍五入到最接近 1 的值

PHP
一只名叫tom的猫 2021-11-05 15:18:37
我有一个 PHP 代码,它使用我数据库中的数据并给我一个值。该代码运行良好,但存在十进制问题,将其四舍五入为最接近的 1这是我的时间格式输入值输入 1 09:21:00 输入 2 09:51:00 值应该是 00:30:00 但它给我的值为 0这是我的代码<? echo $rows['at_base'] - $rows['disp_time']; ?>如果我将输入 2 的值更改为 10:00:00 那么它会给我 1如果我能得到一个类似于这个 00:30:00 的值会很棒,甚至值 1.3<tr>                <td align="center"><? echo $rows['disp_time']; ?></td>                <td align="center"><? echo $rows['on_scene']; ?></td>                <td align="center"><? echo $rows['leave_scene']; ?></td>                <td align="center"><? echo $rows['at_base']; ?></td>                <td align="center"><? echo $rows['at_base'] - $rows['disp_time']; ?></td>                <td align="center"><? echo $rows['close_km'] - $rows['open_km']; ?></td>            </tr>
查看完整描述

3 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

您不能对字符串进行数学运算(即使它们被格式化为时间)。您需要使用正确的数据类型,这里可以使用 DateTime 对象(或使用程序date()with 的时间戳strtotime())。


<?php 

$start = new DateTime($rows['disp_time']);

$end = new DateTime($rows['at_base']);

$diff = $start->diff($end);

echo $diff->format("%H:%I:%S");

现场演示https://3v4l.org/236Y9

或者使用程序strtotime()和date(),


<?php 

echo date("H:i:s", strtotime($rows['disp_time']) - strtotime($rows['at_base']));

现场演示https://3v4l.org/8cJQM


查看完整回答
反对 回复 2021-11-05
?
HUWWW

TA贡献1874条经验 获得超12个赞

您可以像这样使用日期功能


$time1 = new DateTime('09:21:00');

$time2 = new DateTime('09:51:00');

$interval = $time1->diff($time2);

echo $interval->format('%H:%i:%S');

这将为您提供“00:30:00”,这是您的要求


查看完整回答
反对 回复 2021-11-05
?
潇湘沐

TA贡献1816条经验 获得超6个赞

简单的解决方案是


date_default_timezone_set('UTC'); // if you set utc, we get exact difference b/w times


$start = strtotime($rows['at_base']);

$end  = strtotime($rows['disp_time']);

$diff =  abs($end-$start);

echo date('H:i:s',$diff);


查看完整回答
反对 回复 2021-11-05
  • 3 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信