Redondeando una fecha y hora MYSQL al primer intervalo de 15 minutos en milisegundos (PHP)
Estoy buscando una fecha y hora de MYSQL que se parece a:
2010-08-11 11:18:28
Necesito convertirlo en el "piso" o en el primer intervalo de 15 minutos y generarlo en milisegundos para otra función.
Entonces, este caso sería:
2010-08-11 11:15:00 en milisegundos
Whoops! Lo siento, necesito aclarar, ¡necesito un código que lo transforme en milisegundos DENTRO de php!
Hacer una prueba de tiempo reveló lo siguiente:
$time_start = microtime(true);
for($i=0;$i<10000;$i++)
floor(strtotime('2010-08-11 23:59:59')/(60*15))*60*15*1000;
$time_end = microtime(true);
echo 'time taken = '.($time_end - $time_start);
tiempo tomado = 21.440743207932
$time_start = microtime(true);
for($i=0;$i<10000;$i++)
strtotime('2010-08-11 23:59:59')-(strtotime('2010-08-11 23:59:59') % 900);
$time_end = microtime(true);
echo 'time taken = '.($time_end - $time_start);
tiempo tomado = 39.597450017929
$time_start = microtime(true);
for($i=0;$i<10000;$i++)
bcmul((strtotime('2010-08-11 23:59:59')-(strtotime('2010-08-11 23:59:59') % 900)), 1000);
$time_end = microtime(true);
echo 'time taken = '.($time_end - $time_start);
tiempo tomado = 42.297260046005
$time_start = microtime(true);
for($i=0;$i<10000;$i++)
floor(strtotime('2010-08-11 23:59:59')/(900))*900000;
$time_end = microtime(true);
echo 'time taken = '.($time_end - $time_start);
tiempo tomado = 20.687357902527
tiempo tomado = 19.32729101181
tiempo tomado = 19.938629150391
Parece que la función strtotime () es lenta y probablemente deberíamos evitar usarla doblemente cada vez que sea necesario. El timetaken (60 * 15)! = Timetaken (900) fue un poco sorprendente ...