我有一个系统,我需要添加一定数量的小时。 我一直在寻找,这就是我得到的,到目前为止它是最准确的方法,但仍然没有给我我需要的答案
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”而不是
答案 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;
}