将小数小时添加到php

时间:2017-10-26 11:32:25

标签: php datetime timestamp strtotime

我有一个系统,我需要添加一定数量的小时。 我一直在寻找,这就是我得到的,到目前为止它是最准确的方法,但仍然没有给我我需要的答案

    function calculateHours($hours){

    $now =  new DateTime("2017-10-25 10:23:00");  
    $time = array();
    $time = explode(".", $hours);
    $time [1] += $time [0]*60;

    $now->modify("+".$time[1]." hours");

    return $now; 
}


$diff = 119.23;
$answer = calculateHours($diff);
echo $answer ->format('Y-m-d H:i:s');

我想要达到的答案是“2017-11-09 11:00:00”,我收到“2017-10-25 12:22:23”而不是

3 个答案:

答案 0 :(得分:1)

添加小时数不正确。当你将小时数乘以60时,它会花费几分钟。

此代码应该有效。

function calculateHours($hours){

    $now =  new DateTime("2017-10-25 10:23:00");
    $time = explode(".", $hours);
    $time[1] += $time[0]*60;

    $now->modify("+".$time[1]." minutes");

    return $now;
}


$diff = 119.23;
$answer = calculateHours($diff);
echo $answer->format('Y-m-d H:i:s');

结果为2017-10-30 09:46:00

答案 1 :(得分:0)

使用date_add

date_add($now, date_interval_create_from_date_string($tempo[1]' hours'));

或作为对象:

 $now->add( DateInterval::createFromDateString($tempo[1].' hours'));

答案 2 :(得分:0)

您应该使用DateInterval php class$hours变量创建一个带有x秒的inverval。

然后您只需使用datetime add interval方法修改日期

请看一下这个例子

function calculateHours($hours){

    $now       =  new DateTime("2017-10-25 10:23:00");  
    var_dump($now);
    $timeParts = explode(".", $hours);
    // Where 23 is a percentage of on hour
    $minutes   = $timeParts[0] * 60 + round($time[1] * 60 / 100);
    // Where 23 is the number of minutes
    $minutes   = $timeParts[0] * 60 + $time[1];

    $interval = new DateInterval(sprintf('PT%dM', $minutes));
    $now->add($interval);
    echo $now->format('Y-m-d H:i:s');

    return $now; 
}