Wie, um die Anzahl der Stunden bis Mitternacht mit PHP

Szenario: Ein Datensatz wurde in die Datenbank eingegeben.

Ich bin versucht, herauszufinden, die folgenden Gleichungen:

  1. Wie man die Anzahl der Stunden seit der Aufzeichnung Hinzugefügt wurde.
  2. Wie man, wie viele Stunden verbleiben, bis Mitternacht, da der Datensatz
    Hinzugefügt wurde.

Angesichts dieser Zeiten:

  • Datum /Zeit: 2012-08-22 20:11:20
  • Zeitstempel: 1345684280
  • Mitternacht Heute Abend: 2012-08-23 00:00:00
  • Mitternacht Zeitstempel: 1345698000

Ich das Gefühl, ich bin auf dem richtigen Weg. Nur müssen einige richtige Mathematik zu tun, die Berechnungen? Ich bin schrecklich in Mathematik. Jede Hilfe oder Anleitung wäre sehr hilfreich. Ich bin nicht auf der Suche für jemanden ABZUSCHLIEßEN, der DAS FÜR MICH. Gerade auf der Suche nach Rat, was ich falsch mache, oder wie könnte ich es besser machen. Vielleicht erklären die mathematischen Formeln notwendig, um mein Ziel erreichen.

Hier ist was ich habe, so weit:

class tools{

    public function __construct(){
    }

    public function check_time($time, $request){
        $time = strtotime($time);
        if($request == 'since'){
            $theTime = time() - $time;
            $prefix = 'Since:';
        } elseif($request == 'until'){
            $midnight = mktime(0, 0, 0, date('n'), date('j'), date('Y'));
            $theTime = $midnight - $time;
            $prefix = 'Until:'; 
        }

        $tokens = array (
            31536000 => 'year',
            2592000 => 'month',
            604800 => 'week',
            86400 => 'day',
            3600 => 'hour',
            60 => 'minute',
            1 => 'second'
        );

        foreach($tokens as $unit => $text){
            if($theTime < $unit) continue;
            $duration = floor($theTime / $unit);
            return $prefix.' '.$duration.' '.$text.(($duration>1)?'s':'');
        }
    }
}//EoF tools class

$tools = new tools();

print_r($tools->check_time('2012-08-22 20:11:20', 'since'));
print_r($tools->check_time('2012-08-22 20:11:20', 'until'));
Schreibe einen Kommentar