Округление даты-времени MYSQL до самого раннего 15-минутного интервала в миллисекундах (PHP)

Я выбираю datetime из MYSQL, который выглядит так:

2010-08-11 11:18:28

Мне нужно преобразовать его в «пол» или самый ранний 15-минутный интервал и вывести в миллисекундах для другой функции.

Итак, этот случай будет:

2010-08-11 11:15:00 в миллисекундах

Упс! Извините - нужно уточнить - мне нужен код, который преобразует его в миллисекунды в рамках php!

Проведение теста времени показало следующее:

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

затраченное время = 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);

затраченное время = 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);

затраченное время = 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);

затраченное время = 20,687357902527

затраченное время = 19.32729101181

затраченное время = 19,938629150391

Похоже, что функция strtotime () медленная, и нам, вероятно, следует избегать ее двойного использования каждый раз, когда она требуется. Timetaken (60 * 15)! = Timetaken (900) был немного неожиданностью ...

Ответы на вопрос(0)

Ваш ответ на вопрос