Округление даты-времени 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) был немного неожиданностью ...