计算php中两个日期时间之间的差异

时间:2016-05-20 12:01:57

标签: php

我有2个日期时间,我想用分钟来计算差异:

 $date_reservation=strtotime($_POST['date_reservation']);;
$dt = new DateTime();
$date_annulation =  strtotime($dt->format('Y-m-d H:i:s'));
$attente = (round(abs($date_annulation - $date_reservation)/60)%60);

它只需要分钟而不是小时。

我已经尝试过这个功能(来自php文档)

$interval = $date_annulation->diff($date_reservation); 
$years = $interval->format('%y'); 
$months = $interval->format('%m'); 
$days = $interval->format('%d'); 

但它没有用(错误500)

4 个答案:

答案 0 :(得分:0)

如果您了解使用此方法可能存在的不准确之处,那么可以只比较Unix时间戳:

$date_reservation = strtotime('2016-05-20 13:30');
$date_annulation = strtotime('now');
$diff_minutes = round(abs($date_annulation - $date_reservation)/60, 0);

您的代码中唯一的问题是,mod 60您的会议记录(%60)。这当然只给你整整几个小时的分钟。

请注意,strtotime使用运行此代码的计算机上设置的时区来解释日期时间字符串。您可以使用date_default_timezone_set()设置代码。

请参阅ideone.com上的示例。

答案 1 :(得分:0)

您的问题是 $ date_annulation 不是DateTime对象。使用strtotime保持简单

<?php
$date_reservation = strtotime($_POST['date_reservation']);
$date_annulation = strtotime('now');
$diff_minutes = ($date_annulation - $date_reservation)/60;

echo $diff_minutes;

答案 2 :(得分:0)

500 Internal Server Error的回复表示您的PHP代码存在问题。检查服务器日志文件(Apache的error_log,PHP的php_errors.log)以找出确切的位置(文件和行)和原因。

与此同时,您从文档中复制的代码不起作用,因为您尝试在数字上调用DateTime类的方法(strtotime()返回的值。它没有'这样做。

但是,如果您使用DateTime(及相关)对象,它确实有效:

$date_reservation = new DateTime($_POST['date_reservation']);
$date_annulation  = new DateTime('now');

$interval = $date_annulation->diff($date_reservation); 
$years = $interval->format('%y'); 
$months = $interval->format('%m'); 
$days = $interval->format('%d'); 

答案 3 :(得分:-1)

我给你时差代码

<?php 
//$datetime1=strtotime('Y-m-d','time to which difference obtained');
$current_time =strtotime(date("Y-m-d H:i:s"));
//$checkTimeEnd = strtotime('time to which difference obtained');
    $checkTimeStart = strtotime('time to which difference obtained');
    //echo $current_time;
    $all = round((($current_time - $checkTimeStart) / 60),2);
    //echo floor($all/(60*60*24));

    $test = round($all/60,2);

    $d = floor ($all / 1440);
    $h = floor (($all - $d * 1440) / 60);
    $m = $all - ($d * 1440) - ($h * 60);

?>

打印$ d表示日期$ h表示小时$ m表示分钟