Frage

Ich versuche, mit Daten zum ersten Mal an der Arbeit, habe ich ihm etwas, dass mit Flash, aber es ist anders.

Ich habe zwei verschiedene Daten, und ich mag den Unterschied in Stunden und Tagen mit ihnen sehen, ich habe zu viele Beispiele gefunden, aber nicht, was ich loking:

<?php
    $now_date = strtotime (date ('Y-m-d H:i:s')); // the current date 
    $key_date = strtotime (date ("2009-11-21 14:08:42"));
    print date ($now_date - $key_date);
    // it returns an integer like 5813, 5814, 5815, etc... (I presume they are seconds) 
?>

Wie kann ich wandeln es in Stunden oder Tagen?

War es hilfreich?

Lösung

Nun, können Sie immer date_diff verwenden, aber das ist nur für PHP 5.3.0 +

Die Alternative wäre math.

  

Wie kann ich konvertiere sie [Sekunden], um Stunden oder Tage?

Es gibt 60 Sekunden pro Minute, was bedeutet, daß es 3600 Sekunden pro Stunde.

$hours = $seconds/3600;

Und natürlich, wenn Sie Tage benötigen ...

$days = $hours/24;

Andere Tipps

Die DateTime diff Funktion gibt ein DateInterval Objekt. Dieses Objekt besteht aus variabeles mit der Differenz. Sie können die Tage, Stunden, Minuten abfragen, Sekunden genau wie im Beispiel oben.

Beispiel:

<?php 
 $dateObject = new DateTime(); // No arguments means 'now'
 $otherDateObject = new DateTime('2008-08-14 03:14:15');
 $diffObject = $dateObject->diff($otherDateObject)); 
 echo "Days of difference: ". $diffObject->days; 
?>

Siehe Handbuch über DateTime .

Leider ist es ein PHP 5.3> nur Funktion.

Wenn Sie PHP5.3 haben müssen Sie nicht diese Methode von Userland verwenden könnte ( genommen von WebDeveloper.com )

function date_time_diff($start, $end, $date_only = true)  // $start and $end as timestamps
{
    if ($start < $end) {
        list($end, $start) = array($start, $end);
    }
    $result = array('years' => 0, 'months' => 0, 'days' => 0);
    if (!$date_only) {
        $result = array_merge($result, array('hours' => 0, 'minutes' => 0, 'seconds' => 0));
    }
    foreach ($result as $period => $value) {
        while (($start = strtotime('-1 ' . $period, $start)) >= $end) {
            $result[$period]++;
        }
        $start = strtotime('+1 ' . $period, $start);
    }
    return $result;
}

$date_1 = strtotime('2005-07-31');
$date_2 = time();
$diff = date_time_diff($date_1, $date_2);
foreach ($diff as $key => $val) {
    echo $val . ' ' . $key . ' ';
}

// Displays:
// 3 years 4 months 11 days 

erwähnt TheGrandWazoo ein Verfahren zur PHP 5.3>. Für niedrigere Versionen können Sie die Anzahl der Sekunden zwischen den beiden Daten mit der Anzahl der Sekunden in einem Tag devide die Anzahl der Tage zu finden.

Für Tage, die Sie tun:

$days = floor(($now_date - $key_date) / (60 * 60 * 24))

Wenn Sie wissen möchten, wie viele Stunden noch übrig sind, können Sie den Modulo-Operator (%)

$hours = floor((($now_date - $key_date) % * (60 * 60 * 24)) / 60 * 60)
<?php
    $now_date = strtotime (date ('Y-m-d H:i:s')); // the current date 
    $key_date = strtotime (date ("2009-11-21 14:08:42"));
    $diff = $now_date - $key_date;
    $days    = floor($diff/(60*60*24));
    $hours   = floor(($diff-($days*60*60*24))/(60*60));
    print $days." ".$hours." difference";
?>

Ich bevor Epoche / Unix-Zeit-Delta zu verwenden. Zeit dargestellt in Sekunden und als solche können Sie sehr schnell teilen, indem er 3600 für Stunden und dividieren durch 24 * 3600 = 86400 für Tage.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top