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:
- Wie man die Anzahl der Stunden seit der Aufzeichnung Hinzugefügt wurde.
- 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'));
InformationsquelleAutor Michael Ecklund | 2012-08-23
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Lösung hier ist sehr einfach. Es ist ein kleinerer Fehler, dass die Ursache all Ihrer Probleme.
In Ihrem code, den Sie haben, dies zu berechnen Mitternacht.
Dies ist falsch, für die einfache Tatsache, dass es mit den HEUTE Mitternacht (Was gewesen wäre, 00:00 heute jedoch viele Stunden von jetzt. Sie möchten Mitternacht MORGEN, denn es ist als 00:00 auf 24 Stunden Zeit und das ist morgen. Die richtige Art und Weise zu tun, es ist einfach so:
Nur im Hinterkopf behalten, dass strtotime () - Grundlagen alles, was aus der GMT, so stellen Sie sicher, dass Sie eine Standard-Zeitzone in der Datei/Anwendung.
Ich hoffe, meine Antwort ist klar und erklärt, warum der code, den Sie geschrieben ist falsch und wie es zu lösen ist.
Vielleicht so etwas? Ich muss zugeben nicht ganz zu verstehen, was das gewünschte Ergebnis ist:
Schön und einfach:
86400
ist die erste Zeit des Tages.time()
ist die aktuelle Zeit.strtotime("today")
ist die starttime von diesem Tag.date("H:i:s", $timeLeft)
ist für die Formatierung in Stunden, Minuten und Sekunden.Sogar der kürzere Weg:
Mitternacht ist nicht mehr, als am nächsten Tag ohne Angabe von Zeit, der beste Weg, es zu tun sein muss :
wenn du mehr wissen möchtest : php date_diff
Können Sie versuchen, diese: