Rundung PHP timestamp
Was wäre eine gute Lösung, um Runde einen timestamp in der Stunde?
Beispielsweise nach der Verwendung von date('d.m.y h:m', time())
bekomme ich '02.08.11 7:07'... Nun, aus diesem, ich möchte den timestamp für 7:00.
Wie kann ich das erreichen?
- sind Sie auf der Rundung oben und unten, je nachdem, welche Zeit es ist, oder Sie wollen einfach nur 00, jedes mal?
- Nur 00 Uhr jede Zeit... ich brauche nur eine Funktion, wird die 00-Minuten-Zeitstempel timestamp eingegeben.
- Das würde ich gerne auch wissen. Sie sind nur auf der Decke / Fußböden, die Stunden-oder wollen Sie eigentlich um Sie herum?
- Können Sie weitere Beispiele? Was soll passieren, mit der Zeit
7:50
sollte sich7:00
oder8:00
? - ist es nicht eigentlich egal, könnte 7.00 oder 8.00
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update
Nachdem ich Greg Miller ' s "Zeit-Programmierung Grundlagen" sprechen über Google cctz C++ - Bibliothek, ich bin unzufrieden mit meiner vorherigen Antwort.
Umgang mit Zeit ist ein sehr Komplexes Thema (auch wenn die Diskontierung relativistische Effekte). Wir haben zu Ehren, Dinge wie Zeitzonen mit ungeraden offsets, Sommerzeit, die Zeit springt durch die Gesetzgebung, änderungen oder Schaltsekunden und wahrscheinlich noch viele weitere Macken.
Während viele von diesen haben nur eine lokale Wirkung in Raum und Zeit, die Benutzer unserer Programme können immer noch unglücklich genug, um betroffen zu bekommen.
TL;DR
Es ist wahrscheinlich am besten verlassen Sie sich auf die zugrunde liegenden Funktionen wie in holodoc Antwort zu behandeln, die Macken von timezone-management.
Alte Antwort
Wenn ich mich richtig erinnere der Zeitstempel begann um exakt 0:00 Uhr dem 1.1.1970 gewertet, es sollte also genügen, um zu teilen durch 3600 (floating) dann round/floor/ceil und multipliziert mit 3600 (integer). Die division muss floating-Punkt für die Runde/ceil zu arbeiten.
Beispiel der Rundung:
Probe des Bodenbelags:
Probe Decke:
Jemals darüber nachgedacht, entfernen Sie die Minuten? 🙂
Wenn Sie den Zeitstempel der Anfang minute nur ändern Sie Ihre
data
argument ein bisschen und verwenden strtotime.Erfassen, die Stunde und die minute in 2 verschiedenen Variablen. Wenn die Minuten >= 30 dann fügen Sie die Stunde.
Nicht die eleganteste Lösung, aber es funktioniert. 🙂
Einfachste Lösung:
Es ist sehr ungewöhnlich zu sehen, jede Art von Zeitstempeln, wo die Stunden aufgerundet. Wenn der Zeitstempel sagt 7:00 - es heißt, es geschah in der 7. Stunde, zu jeder Zeit. Wenn Sie beginnen aufrunden Zeitstempel Menschen interpretieren es als geschehen jederzeit in der 8. Stunde... das kann zu Verwirrung führen.