Arredondando um datetime MYSQL para o intervalo de 15 minutos mais cedo em milissegundos (PHP)

Estou buscando um datetime do MYSQL que se parece com:

2010-08-11 11:18:28

Preciso convertê-lo no "piso" ou no intervalo de 15 minutos mais cedo e em milissegundos para outra função.

Portanto, este caso seria:

2010-08-11 11:15:00 em milissegundos

Ops! Desculpe - preciso esclarecer - preciso de um código que o transforme em milissegundos DENTRO do php!

A realização de um teste de temporização revelou o seguinte:

$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);

tempo gasto = 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);

tempo gasto = 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);

tempo gasto = 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);

tempo gasto = 20.687357902527

tempo gasto = 19.32729101181

tempo gasto = 19.938629150391

Parece que a função strtotime () é lenta e provavelmente devemos evitar usá-la duplamente sempre que necessário. O timetaken (60 * 15)! = Timetaken (900) foi um pouco de surpresa ...

questionAnswers(4)

yourAnswerToTheQuestion