首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php加减时间

php加减时间
EN

Stack Overflow用户
提问于 2014-03-24 19:16:31
回答 2查看 2.2K关注 0票数 0

我试图编码一个小脚本,将工作几个小时。

我想要一个旅行时间,开始时间和结束时间。我遇到的问题是得到了全部时间。

代码语言:javascript
复制
$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。任何帮助都将不胜感激。

//更新

代码语言:javascript
复制
$a = new DateTime($_POST['start']);
$b = new DateTime($_POST['finish']);
$interval = $a->diff($b);

echo $interval->format("%H");

这很好,唯一的问题是我如何显示时间和分钟,例如‘9点’

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-24 19:20:15

更新

既然你改变了问题..。查看DateTime::format(),的语法

代码语言:javascript
复制
echo $interval->format("H.i");

应该为您提供所需的格式。

旧答案

处理时间的最简单方法是将每一次表示为若干秒。(如果是日期,请使用自该时代以来的秒数。)您可以编写一些帮助函数,将时间转换为所需的格式。

例如,

代码语言:javascript
复制
16.00 -> 57600  
7.30 -> 27000  
1.00 -> 3600

(57600 - 27000) + 3600 = 34200  
34200 -> 9.30

下面是我提出的帮助函数:

代码语言:javascript
复制
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;
}
票数 3
EN

Stack Overflow用户

发布于 2014-03-24 19:40:49

你可以试试这样的东西

代码语言:javascript
复制
<?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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22618585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档