【发布时间】:2023-03-23 18:03:01
【问题描述】:
我正在尝试编写一个可以运行数小时的小脚本。
我想要一个旅行时间、开始时间和结束时间。我遇到的问题是获取总时间。
$travel = $_POST['travel']; // -- 1.00 (1 hour)
$start = $_POST['start']; // -- 7.30
$finish = $_POST['finish']; // -- 16.00
所以总时间为 (16.00 - 7.30) + 1.00 = 9.5 小时
但这不起作用,因为 16.00 - 7.30 = 8.7,然后加上 1 = 9.7。
我明白它为什么错了,但不知道如何解决它。我无法将半小时的时间值更改为 0.50,因为该值来自 jquery 插件。任何帮助将不胜感激。
//更新
$a = new DateTime($_POST['start']);
$b = new DateTime($_POST['finish']);
$interval = $a->diff($b);
echo $interval->format("%H");
这很好用,唯一的问题是我如何显示小时和分钟,例如'9.00'
【问题讨论】:
-
如果您要进行日期数学运算,请使用实际的小时和分钟,而不是小数。
-
或者更好的是,使用DateTime() 函数来执行此操作。
-
当您使用这些小数进行数学运算时,请记住,在实际小时数中,0.30 等于小数点 0.5
-
如果您选择将时间格式化为 hh.mm,如果它被解释为小数值(7.30 => 7 和 3/10 小时),请不要感到惊讶。您必须将 7.30 转换为 7.5(7 个半小时)才能使正常数学正常工作。附言不要忘记在一天结束时处理环绕式(过夜旅行)。
标签: php