2017-05-21 4 views
1

Ich habe einen Zeitstempel, die ich brauche, als zurückzukehren:PHP Zeitstempel Stunden bis Tage

Wenn es weniger als 1 Stunde ist ich es brauche „vor 30 Minuten“ zu sagen. Wenn es unter 24 Stunden ist, brauche ich es zu sagen "vor 6 Stunden". Wenn es zu 24 Stunden kommt, brauche ich es zu sagen "vor 1 Tag". Wenn es 48 Stunden dauert, muss ich sagen "vor 2 Tagen".

Würde dies mit einer bedingten Anweisung geschehen?

Bisher kann ich die Anzahl der Tage zurück:

$post_timestamp \t = strtotime($post_timestamp); 
 
$current_date = strtotime(time()); 
 
\t \t \t \t \t 
 
$datediff = $current_date - $post_timestamp; 
 
$days = floor($datediff/(60*60*24)); \t \t \t \t \t

+3

Möglicherweise ist eine gute Idee, [Carbon] (http://carbon.nesbot.com/docs/) für diesen Anwendungsfall zu betrachten. –

+0

Hinzufügen zu Matts Kommentar, die Methode, die Sie suchen, ist DiffForHumans() –

Antwort

2

Ich denke, man DateTime verwenden können, DateInterval und DatePeriod:

$date1 = new DateTime(); 
$date2 = DateTime::createFromFormat('U', $post_timestamp); # I assume a unix timestamp here 
//determine what interval should be used - 1 minute 
$interval = new \DateInterval('PT1M'); 
//create periods every minute between the two dates 
$periods = new \DatePeriod($date2, $interval, $date1); 
//count the number of objects within the periods 
$mins = iterator_count($periods); 


if ($mins < 60) 
{ 
    $say = "30 minutes ago"; 

} elseif ($mins >= 60 and $mins < 60 * 24) 
{ 
    $say = "6 hours ago"; 

} elseif ($mins >= 60 * 24 and $mins < 60 * 48) 
{ 
    $say = "1 day ago"; 

} elseif ($mins >= 60 * 48) 
{ 
    $say = "2 days ago"; 
} 

print $say; 
+1

Works great thank you. Von dort aus kann ich die Anzahl der Stunden und Tage aus der Anzahl der Minuten zum Drucken ausrechnen –

+0

Sie sind herzlich willkommen @SSAM –

1

Sie Code verwenden können, wie folgende:

date_default_timezone_set('Asia/Calcutta'); 
$post_timestamp="2017-05-21 5:00 pm"; 
$post_timestamp = strtotime($post_timestamp); 
$current_date = strtotime(date('Y-m-d h:i a'));     
$datediff = $current_date - $post_timestamp; 
$mins = ($datediff)/60; 
$hours = $datediff/(60 * 60); 

Sie erhalten Minuten und Stunden damit, setzen Sie Ihren Zustand dementsprechend

Verwandte Themen