An easy solution would be to use the modulo expression to remove the exceeded seconds from a round day timestamp.
<?php
date_default_timezone_set('UTC');
$timestamp = time();
echo "timestamp : " . $timestamp . PHP_EOL;
echo "timestamp formatted : " . date('Y-m-d H:i:s', $timestamp) . PHP_EOL;
$diff = $timestamp % (60 * 60 * 24);
echo "diff : " . $diff . PHP_EOL;
$midnight = $timestamp - $diff;
echo "midnight : " . $midnight . PHP_EOL;
echo "midnight formatted : " . date('Y-m-d H:i:s', $midnight) . PHP_EOL;
This would output the following result.
timestamp : 1575451074
timestamp formatted : 2019-12-04 09:17:54
diff midnight : 1575417600
midnight formatted : 2019-12-04 00:00:00
And here is a one liner function to get your midnight from any timestamp.
function getMidnight ($timestamp) { return $timestamp - ($timestamp % 86400); }
http://sandbox.onlinephpfunctions.com/code/1d85c935e71fcf011284ae33658e0c68dd8d8c28