我试图编码一个小脚本,将工作几个小时。
我想要一个旅行时间,开始时间和结束时间。我遇到的问题是得到了全部时间。
$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。
我明白为什么这是错误的,但不知道如何解决它。我不能将时间值更改为.50半小时,因为值来自jquery。任何帮助都将不胜感激。
//更新
$a = new DateTime($_POST['start']);
$b = new DateTime($_POST['finish']);
$interval = $a->diff($b);
echo $interval->format("%H");这很好,唯一的问题是我如何显示时间和分钟,例如‘9点’
发布于 2014-03-24 19:20:15
更新
既然你改变了问题..。查看DateTime::format(),的语法
echo $interval->format("H.i");应该为您提供所需的格式。
旧答案
处理时间的最简单方法是将每一次表示为若干秒。(如果是日期,请使用自该时代以来的秒数。)您可以编写一些帮助函数,将时间转换为所需的格式。
例如,
16.00 -> 57600
7.30 -> 27000
1.00 -> 3600
(57600 - 27000) + 3600 = 34200
34200 -> 9.30下面是我提出的帮助函数:
function timeToSeconds ($time) {
$hours = floor($time);
$minutes = ($time - $hours) * 100;
$seconds = ($hours * 3600) + ($minutes * 60);
return $seconds;
}
function secondsToTime ($seconds) {
$hours = floor($seconds / 3600);
$minutes = ($seconds - ($hours * 3600)) / 60;
$time = "" . $hours . "." . $minutes;
return $time;
}发布于 2014-03-24 19:40:49
你可以试试这样的东西
<?php
$travel =1.00; // -- 1.00 (1 hour)
$start = 7.30; // -- 7.30
$finish = 16.00; // -- 16.00
//do the sum
$sum = $finish-$start+$travel;
//get minutes
$exp = explode(".",$sum);
$minutes = $exp[1];
//if $minutes has only one digit, add a 0
if(strlen($minutes)<2){$minutes .= 0;}
//if $minutes are more than 59, convert them in hours
if($minutes>59){
//it would be $sum-0.6+1
$new_sum = $sum+0.4;
}
else{
$new_sum = $sum;
}
echo $minutes.'<br>'.$sum.'<br>'.$new_sum;
?>此示例将输出70 9.7 10.1
https://stackoverflow.com/questions/22618585
复制相似问题