我取出由MYSQL日期时间,它看起来像:舍入MYSQL日期时间到最早每隔15分钟以毫秒为单位(PHP)
2010-08-11十一时18分28秒
我需要将其转换为“楼层”或最早的15分钟间隔,并以毫秒为单位输出另一个功能。
所以,这种情况下应该是:
2010-08-11 11:15:00毫秒
哎呦!对不起 - 需要澄清 - 我需要将代码转换为毫秒内的代码!
做一个定时测试揭示了以下内容:采取
$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)是一个惊喜的一点点...
嗨!这看起来像MySQL的rad,是否有像这样在php中做同样的聪明方式? – DrMHC 2010-08-12 17:06:17
当然,看看我的编辑。 – wimvds 2010-08-13 07:26:56