PHP - Zeitraum Von DateTime

Ich habe ein Datum im format "14/11/2012 4:26:10 PM" gezogen aus einer mysql-Abfrage.

Ich bin nicht sehr erfahren mit PHP, aber wie kann ich berechnen, eine einfache Zeitspanne zwischen Daten "Dann" und "Jetzt"?

Format und in lesbarer string? zum Beispiel... "1 Stunde, 5 Minuten".

Ich habe versucht, zu suchen für eine Lösung, die ich gefunden, dass ich dachte, arbeitete, aber es hat nicht berücksichtigt, für die AM/PM, so dass es endete verursacht ein problem, wenn ich baute es zu einem Zeitstempel. hat jemand eine Idee?

Dies ist, was ich versuche zu tun, aber das funktioniert nicht so gut:

$time = $row["NotificationSent"];           
            list($day, $month, $year, $hour, $minute) = split('[/:]', $time); 
            $timestamp = mktime($hour, $minute,0, $month, $day, $year);         
            $j = TimeSince($timestamp);

den timesince-Funktion habe ich gefunden aus google, die ich verwende, ist:

    function TimeSince($original) //$original should be the original date and time in Unix format
    {
        //Common time periods as an array of arrays
        $periods = array(
            array(60 * 60 * 24 * 365 , 'year'),
            array(60 * 60 * 24 * 30 , 'month'),
            array(60 * 60 * 24 * 7, 'week'),
            array(60 * 60 * 24 , 'day'),
            array(60 * 60 , 'hour'),
            array(60 , 'minute'),
            );

        $today = time();
        $since = $today - $original; //Find the difference of time between now and the past

        //Loop around the periods, starting with the biggest
        for ($i = 0, $j = count($periods); $i < $j; $i++)
        {
            $seconds = $periods[$i][0];
            $name = $periods[$i][1];

            //Find the biggest whole period
            if (($count = floor($since / $seconds)) != 0)
            {
                break;
            }
        }

        $output = ($count == 1) ? '1 '.$name : "$count {$name}s";

        if ($i + 1 < $j)
        {
            //Retrieving the second relevant period
            $seconds2 = $periods[$i + 1][0];
            $name2 = $periods[$i + 1][1];

            //Only show it if it's greater than 0
            if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0)
            {
                $output .= ($count2 == 1) ? ', 1 '.$name2 : ", $count2 {$name2}s";
            }
        }
        return $output;
    }

Dem Ergebnis formatiert ist, was ich Suche, aber gibt falsche zahlen.
"Am 19.11.2012 2:48:53 Uhr" ist die Rückgabe "1 Tag, 5 Stunden," aber es sollte "17 Stunden, 32 Minuten"

Jede Hilfe ist willkommen.

  • möglich, Duplikat der so berechnen Sie die Differenz zwischen zwei Datumsangaben mit PHP?
  • mktime erwartet die Stunde im 24h-format, während Sie die Spaltung von text weglassen PM so 12h Differenz ist zu erwartet, dass in 50% der Fälle.
  • kannst du die sql-Abfrage? Ich Frage mich, wie Sie eigentlich speichern den timestamp in die db
  • $Zeit = $row["NotificationSent"]; Es ist gespeichert in der db als "TEXT"
InformationsquelleAutor Dean | 2012-11-19
Schreibe einen Kommentar