在PHP中添加分钟

时间:2016-07-19 11:29:47

标签: php time

我正在尝试使用PHP在给定时间内添加60或90分钟。

我尝试过以两种方式做到这一点,结果都是出乎意料的结果。

输入数据:

$data['massage_hour_from'] = '09:00:00';
$data['massage_duration'] = 60;

首先尝试:

$data['massage_hour_to'] = date('H:i:s', strtotime('+' . $data['massage_duration'] . ' minutes', strtotime($data['massage_hour_from'])));

第二次尝试:

$datetime = new DateTime($data['massage_date']);
$datetime->setTime($data['massage_hour_from']);
$datetime->modify('+' . $data['massage_duration'] .' minutes');
$data['massage_hour_to'] = $datetime->format('g:i:s');

我做错了什么?

3 个答案:

答案 0 :(得分:2)

我用较短的变量名替换了你的变量名,但是这段代码有效:

$from = '09:00:00'; //starting string
$duration = 90; //in minutes
$date = new DateTime($from);
$date->add(new DateInterval("PT{$duration}M"));//add minutes
$to = $date->format('H:i:s'); // '10:30:00'

Live demo

答案 1 :(得分:0)

试试这个,

$data['massage_hour_to']  = strtotime("+90 minutes", strtotime($data['massage_hour_from']));

答案 2 :(得分:0)

您还可以使用DateTimeadd方法:

$data['massage_hour_from'] = '09:00:00';
$data['massage_duration'] = new DateInterval('PT60M'); 

$massageStart = new DateTime($data['massage_hour_from']);
$massageStart->add($data['massage_duration']);
echo 'Massage ends at: ' . $massageStart->format('H:i:s');

您可以阅读有关DateInterval类构造函数args here

的更多信息