Nur DateTime
$beginOfDay = DateTime::createFromFormat('Y-m-d H:i:s', (new DateTime())->setTimestamp($timestamp)->format('Y-m-d 00:00:00'))->getTimestamp();
$endOfDay = DateTime::createFromFormat('Y-m-d H:i:s', (new DateTime())->setTimestamp($timestamp)->format('Y-m-d 23:59:59'))->getTimestamp();
Zuerst wird ein DateTime-Objekt erstellt und der Zeitstempel auf den gewünschten Zeitstempel gesetzt. Anschließend wird das Objekt als Zeichenfolge formatiert, die die Stunde / Minute / Sekunde auf den Anfang oder das Ende des Tages setzt. Zuletzt wird aus dieser Zeichenfolge ein neues DateTime-Objekt erstellt und der Zeitstempel abgerufen.
Lesbar
$dateTimeObject = new DateTime();
$dateTimeObject->setTimestamp($timestamp);
$beginOfDayString = $dateTimeObject->format('Y-m-d 00:00:00');
$beginOfDayObject = DateTime::createFromFormat('Y-m-d H:i:s', $beginOfDayString);
$beginOfDay = $beginOfDayObject->getTimestamp();
Mit dieser längeren Version können wir das Ende des Tages auf alternative Weise erreichen:
$endOfDayObject = clone $beginOfDayOject();
$endOfDayObject->add(new DateInterval('P1D'))->sub(new DateInterval('PT1S'));
$endOfDay = $endOfDayOject->getTimestamp();
Zeitzone
Die Zeitzone kann auch festgelegt werden, indem dem Format ein Zeitstempel hinzugefügt wird, z. B. O
und der Zeitstempel nach dem Erstellen des DateTime-Objekts angegeben wird:
$beginOfDay = DateTime::createFromFormat('Y-m-d H:i:s O', (new DateTime())->setTimezone(new DateTimeZone('America/Los_Angeles'))->setTimestamp($timestamp)->format('Y-m-d 00:00:00 O'))->getTimestamp();
Flexibilität von DateTime
Wir können auch andere Informationen wie den Anfang / das Ende des Monats oder den Anfang / das Ende der Stunde erhalten, indem wir das zweite angegebene Format ändern. Für Monat: 'Y-m-01 00:00:00'
und 'Y-m-t 23:59:59'
. Für Stunde: 'Y-m-d H:00:00'
und'Y-m-d H:59:59'
Wenn wir verschiedene Formate in Kombination mit den Objekten add () / sub () und DateInterval verwenden, können wir den Anfang oder das Ende eines beliebigen Zeitraums ermitteln, obwohl einige Sorgfalt erforderlich ist, um die Schaltjahre korrekt zu handhaben.
Relevante Links
Aus den PHP-Dokumenten: