2016-04-02 4 views
-1

Code unten sehen, von diesem Code, wenn die Bedingung nicht funktioniert, ich weiß nicht, wie die, wenn die Bedingung wite für diesen, wenn die Bedingung nicht für Stunden arbeitet, Tage

<?php       
 
    $start = $row['t_started_on']; 
 
    $due = date('Y-m-d H:i:s'); 
 
    $start_date = new DateTime($start); 
 
    $end_date = new DateTime($due); 
 
    $interval = $start_date->diff($end_date); 
 
    echo "Result " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days "; 
 
// upto here i got correct answer. 
 
    if($interval->h <="24"){ 
 
    $result = $interval->h." Hours";// i want like this 10 Hours ago 
 
}else if ($interval->d <="30")){ 
 
    $result = $interval->d." Days";// i want like this 25 Days ago 
 
}else{ 
 
$result = $interval->m." Months";// i want like this 10 Months ago 
 
} 
 
    ?>

+0

Ist es möglich, Variablen in einer if-else if-else zu mischen? Sie haben nicht angegeben, was das Problem ist. Aber versuchen Sie, "else" von "else if" zu entfernen. – Andreas

Antwort

0

Bitte versuchen sie diese

<?php       
    $start = $row['t_started_on']; 
    $due = date('Y-m-d H:i:s'); 
    $start_date = new DateTime($start); 
    $end_date = new DateTime($due); 
    $interval = $start_date->diff($end_date); 
    echo "Result " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days "; 
// upto here i got correct answer. 
    if($interval->h <= 24){ // Removed quotes 
     $result = $interval->h." Hours";// i want like this 10 Hours ago 
    } 
    else if ($interval->d <= 30)){ // Removed quotes 
     $result = $interval->d." Days";// i want like this 25 Days ago 
    } 
    else{ 
     $result = $interval->m." Months";// i want like this 10 Months ago 
    } 
    ?> 
+0

Funktioniert nicht richtig, $ stat, ich wähle einen Monat vorher aus, aber es kommt 18 Stunden –

0
Hi, 

    One things that we have to check ,is t_started_on coming in Y-m-d H:i:s format ?. 

    Please try this.it should work. 
    <?php       
     $start = $row['t_started_on']; 
     $due = date('Y-m-d H:i:s'); 
     $start_date = new DateTime($start); 
     $end_date = new DateTime($due); 
     $interval = $start_date->diff($end_date); 
     echo "Result " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days "; 
    // upto here i got correct answer. 
     if($interval->h <= 24){ 
     $result = $interval->h." Hours";// i want like this 10 Hours ago 
    }else if ($interval->d <= 30){ 
     $result = $interval->d." Days";// i want like this 25 Days ago 
    }else{ 
     $result = $interval->m." Months";// i want like this 10 Months ago 
    } 
    ?> 

Here's example. 
$start = '2016-03-02 12:00:00 PM'; 
    $due = date('Y-m-d H:i:s'); 
    echo $due; 
    $start_date = new DateTime($start); 
    $end_date = new DateTime($due); 
    $interval = $start_date->diff($end_date); 
    echo "Result " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days "; 
// upto here i got correct answer. 
    if($interval->h <= 24){ 
     $result = $interval->h." Hours";// i want like this 10 Hours ago 
    }else if ($interval->d <= 30){ 
     $result = $interval->d." Days";// i want like this 25 Days ago 
    }else{ 
    $result = $interval->m." Months";// i want like this 10 Months ago 
    } 

i got this result : Result 0 years, 0 months, 30 days 21 Hours,it looks liek correct result. 

Note : Result may be vary due to timezone.