次のような 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) はちょっとした驚きでした...