Datetime auf die letzte Stunde runden

Lesezeit: 2 Minuten

Benutzeravatar von plexcell
Plexzelle

Ich habe versucht, danach zu suchen, aber ich konnte kein gutes Beispiel dafür finden, was ich versuche.

Ich habe Datetime-Werte in der MySQL-Datenbank, die abgerundet werden müssen, wenn dieser Wert verwendet wird.

Beispiel alle diese Werte:

2013-04-20 07:14:42
2013-04-20 07:19:51
2013-04-20 07:37:26
2013-04-20 07:46:28
2013-04-20 07:59:44

Sollte abgerundet werden auf:

2013-04-20 07:00:00

Und

2013-04-20 16:25:34

sollte sein:

2013-04-20 16:00:00 usw…

PHP-Code, der den Datumswert erhält:

$d = strtotime($row["date"]);

Wie ist es also möglich, den Datetime-Wert abzurunden?

  • Sind Datetimes UTC?

    – Sauerstoff

    20. April 2013 um 9:11 Uhr

  • Was ist mit Mikrosekunden?

    – Jewgenij Afanasjew

    21. März 2018 um 3:21 Uhr

  • Funktion zum willkürlichen Runden von PHP DateTimes: stackoverflow.com/a/57399274/339440

    – Stefan R

    8. August 2019 um 0:12 Uhr

Rikeshs Benutzeravatar
Rikesch

Versuche dies,

$date = "2013-04-20 16:25:34"; 
echo date("Y-m-d H:00:00",strtotime($date));

CodePad-Demo.

  • Danke 🙂 Damit hat es funktioniert: $d = strtotime(date(“Ymd H:00:00”,strtotime($row[“date”])));

    – Plexcell

    20. April 2013 um 9:24 Uhr

Wenn Sie die Carbon DateTime-Bibliothek von PHP verwenden (was Sie wirklich sollten – https://github.com/briannesbitt/Carbon )

Sie können es einfach mit erreichen

Carbon::now()->minute(0)->second(0);

  • Was ist mit Mikrosekunden?

    – Jewgenij Afanasjew

    21. März 2018 um 3:20 Uhr

  • Überprüfen Sie meine Antwort, während ich sie verwende startOfHour();

    – ml59

    24. Dezember 2021 um 14:13 Uhr


Da Sie bereits einen Unix-Zeitstempel haben $dist es am effizientesten, anstelle von Datumsfunktionen nur arithmetische Funktionen zu verwenden – insbesondere, wenn Sie eine Ergebnismenge durchlaufen möchten.

$hourTimestamp = $d - ($d % 3600);

Der Modulo-Operator gibt Ihnen den Rest, den Sie vom Zeitstempel subtrahieren, um den Stunden-Zeitstempel zu erhalten.

  • PHP-Daten berücksichtigen Zeitzonen, während Unix-Zeitstempel immer in UTC sind, sodass dies nicht das erwartete Ergebnis für Zeitzonen wie Indien (UTC+5½) oder Iran (UTC+3½) liefert.

    – Gamifizierung

    6. Juli 2020 um 5:38 Uhr

In diesem Fall eine einfache substr tun könnte:

echo substr($date, 0, 13) . ":00:00";

In Bezug auf die @Dayson-Antwort ist dies eine bessere Möglichkeit, die Datumszeit mit Carbon auf die letzte Stunde zu runden

$dt = Carbon::create(2012, 1, 31, 15, 32, 45);
echo $dt->startOfHour();  // 2012-01-31 15:00:00

Überprüf den Modifikator Abschnitt in Carbon Dok

Steves Benutzeravatar
Steve

Für diejenigen, die folgen (viel später!): Carbon hat eine einfache Möglichkeit, dies zu tun

$date = (new Carbon($row['date']))->minute(0)->second(0)->getTimestamp();

Fabios Benutzeravatar
Fabio

Sie können verwenden
date und strtotime Funktion Funktion Um dies zu erreichen, ändern Sie einfach bereits Ihre Minuten und Sekunden entsprechend

    $date="2013-04-20 07:14:42";
    $newdate = date('Y-m-d H:00:00', strtotime($date));

    echo $newdate;

dies wird ausgegeben

2013-04-20 07:00:00

1439950cookie-checkDatetime auf die letzte Stunde runden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy