Я извлекаю дату и время из 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 () медленная, и нам, вероятно, следует избегать ее двойного использования каждый раз, когда она требуется. Время (60 * 15)! = Время (900) было немного неожиданным ...