PHP负时间计算
Posted
技术标签:
【中文标题】PHP负时间计算【英文标题】:PHP negative time calculation 【发布时间】:2022-01-23 18:52:27 【问题描述】:如果我在 php 中加上 1 小时 35 分钟并减去 4 小时,我会得到 -3 小时 30 分钟的剩余时间。
但正确的应该是 -2 小时 30 分钟。哪里错了?
$minutes = null;
while ($z = $stmt->fetch())
$minutes += $z['minutes'];
if ($stmt = $pdo->prepare($sql))
$stmt->execute(array(
':user' => $user
));
$negativeTime = null;
while ($z = $stmt->fetch())
$negativeTime += $z['minutes'];
$minutes = $minutes - $negativeTime;
echo (floor($minutes / 60)) . " hours and " . ($minutes - floor($minutes / 60) * 60) . " minutes";
【问题讨论】:
请发帖minimal reproducible example。不需要 SQL 查询,只需发布$minutes
和 $negativeTime
的实际值即可。
【参考方案1】:
$minutes - floor($minutes/60)
是肯定的。所以你得到的是 -3 小时 加 30 分钟,也就是 -2:30。
您需要区别对待$minutes
的正值和负值,以便小时和分钟都是与零的距离。使用abs()
函数将时间转换为正数,执行计算,如果$minutes
的原始值为负数,则将小时数显示为负数。
$sign = $minutes < 0 ? '-' : '';
$minutes = abs($minutes);
$hours = floor($minutes / 60);
$minutes = $minutes % 60;
echo "$sign$hours hours and $minutes minutes";
DEMO
【讨论】:
我会接受你的解决方案 -2:30 而不是 -3:30? 为什么你不会得到负时间?你没在输出中看到$sign
吗?
它对我有用:ideone.com/1em0M3
$minutes
和 $negativeTime
在合并之前的值是多少?
所以$minutes = $minutes - $negativeTime
之后应该是$minutes = -150
。以上是关于PHP负时间计算的主要内容,如果未能解决你的问题,请参考以下文章
Chrome - Javascript:负指数计算对于 > -3 是错误的 [重复]