如何获得在几分钟内减去两个时间戳的结果?

时间:2014-07-01 08:43:16

标签: php

我有这个代码来减去两个日期,并在几分钟内得到它们之间的差异:

date_default_timezone_set('Asia/Istanbul');
$date1 = '2014-07-01 09:07:25';
$date1 = date_create($date1);
$current_pc_date = date('Y-m-d H:i:s');
$current_pc_date = date_create($current_pc_date);
$diff = date_diff($current_pc_date,$date1);
$minutes_diff = $diff->format("%R%i");
echo $minutes_diff;

if($minutes_diff<5 && $minutes_diff>0)
{
    echo 'yes';
}
else
{
    echo 'no';
}

我想减去日期并在几分钟内得到结果,但在这里它减去了两个日期中的分钟部分,所以如果我改变了$date的小时部分,它在从...减去它时仍会给出相同的结果其他日期例如:

2014-07-01 02:25:48 
2014-07-01 02:23:48

会产生2 minutes

如果我更改了小时部分,它仍会给出相同的结果:

2014-07-01 03:25:48 
2014-07-01 02:23:48

会产生2 minutes

我希望在第二个示例中得到结果,例如62 minutes

2 个答案:

答案 0 :(得分:0)

您可以尝试:

function timeDiff($start_date,$end_date="now"){
    $time_diff = (new Datetime($start_date))->diff(new Datetime($end_date));
    $time_diff_minute = $time_diff->days * 24 * 60;
    $time_diff_minute += $time_diff->h * 60;
    $time_diff_minute += $time_diff->i;
    return $time_diff_minute;
}
    timeDiff('2014-07-01 03:25:48', '2014-07-01 02:23:48'); // 62

答案 1 :(得分:0)

您可以将时间转换为秒,然后减去,然后将差异转换为分钟:

$t1 = '2014-07-01 03:25:48'; 
$t2 = '2014-07-01 02:23:48';

$minutes_diff = abs(strtotime($t1) - strtotime($t2)) / 60;

echo $minutes_diff; //62

See demo


参考文献:

strtotime()将日期转换为时间戳(自1970年1月1日起的秒数)

abs()获取差异的绝对值(如果$t2大于$t1