2014-12-24 5 views
1

Я пытаюсь найти разницу между двумя датами. Он прост не отображает ничего, пустую страницу, показанную для разницы дат.Рассчитать разницу между двумя датами

Ниже приведен код, который я использую.

<? 

$sql = $Db1->query("SELECT * FROM table LIMIT 5"); 

while($row = $Db1->fetch_array($sql)) { 

$datetime1 = date("m-d-Y",mktime(0,0,$row['rec'],1,1,1970)); 
$datetime2 = date("m-d-Y",mktime(0,0,$row['send'],1,1,1970)); 
echo "$datetime1"; 
echo "$datetime2"; 
$diff=date_diff($datetime1,$datetime2); 
echo $diff->format("%R%a days"); 
echo "$diff"; 


} 
?> 

ответ

0

использовать эту функцию

$date1 = $row['rec']; 
$date2 = $row['send']; 
$diff = abs(strtotime($date2) - strtotime($date1)); 
$years = floor($diff/(365*60*60*24)); 
$months = floor(($diff - $years * 365*60*60*24)/(30*60*60*24)); 
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24)); 
printf("%d years, %d months, %d days\n", $years, $months, $days); 
+0

этот скрипт возвращает годы, месяцы и дни ... – Arun

+0

он работает, но показывает что-то вроде этого: 0 лет, 0 месяцев , 0 дней 0 лет, 0 месяцев, 0 дней 0 лет, 0 месяцев, 0 дней 2709 лет, 9 месяцев, 22 дней 1062 года, 8 месяцев, 19 дней Я хотел только дни, :( – Asif

+0

PLS опубликовать вашу дату формат формата даты должен быть в // 2014-12-24 // – Arun

0

Я создал функцию, которую я использую, вы можете изменить ее в соответствии с вашими требованиями. дата отпуска две пустые, если вы хотите найти разницу b/w текущую дату и заданную дату.

function dayspassed($dategiven, $dategiven2){ 
if(empty($dategiven2)){ 
    $currentdate = date('Y-m-d'); 
}else{ 
    $currentdate = $dategiven2; 
} 
    $currentdate = strtotime($currentdate); 
    $dategiven = explode(" ", $dategiven); 
    $dategiven = $dategiven['0']; 
    $yourdate = strtotime($dategiven); 
    $datediff = $yourdate - $currentdate; 
    return $difference = floor($datediff/(60*60*24)); 

}

+0

ничего не показывать даже с этой функцией – Asif

+0

результата вашей базы данных показывают только дату или дату и время? Если это время, вам нужно использовать Explode и хранить только даты в переменных, то использовать эти переменные в этой функции –

0

У меня есть следующие функции:

function get_date_difference_in_days($timestamp1, $timestamp2) { 
    $inputSeconds = abs($timestamp1 - $timestamp2); 
    $days = floor($inputSeconds/(24 * 60 * 60)); 
    return $days; 
    } 
0

Проблема с кодом, что date_diff работает с объектами даты и времени, а вы передавали параметры как строку, а не как объекты datetime.

В обзоре docs четко указано, что date_diff является функцией псевдонима для DateTime :: diff().

Таким образом, решение будет:

$row = array("rec" => "2014-12-24", "send" => "2014-12-20"); 

$datetime1 = DateTime::createFromFormat("Y-m-d", $row["rec"]); 
$datetime2 = DateTime::createFromFormat("Y-m-d", $row["send"]); 

echo $datetime1->format("Y-m-d"); 
echo $datetime2->format("Y-m-d"); 

$diff = $datetime1->diff($datetime2); 

echo $diff->format("%r%a");