Runden einer MYSQL-Datumszeit auf das früheste Intervall von 15 Minuten in Millisekunden (PHP)

Ich rufe eine Datums- / Uhrzeitangabe von MYSQL ab, die so aussieht:

11.08.2010 11: 18: 28

Ich muss es in "Floor" oder das früheste 15-Minuten-Intervall konvertieren und in Millisekunden für eine andere Funktion ausgeben.

Also, dieser Fall wäre:

11.08.2010 11:15:00 in Millisekunden

Hoppla! Sorry - muss geklärt werden - ich brauche Code, der ihn in Millisekunden IN PHP umwandelt!

ei einem Timing-Test wurde Folgendes festgestell

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

time taken = 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);

time taken = 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);

time taken = 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);

time taken = 20.687357902527

time taken = 19.32729101181

time taken = 19.938629150391

Es scheint, dass die Funktion strtotime () langsam ist und wir sollten es wahrscheinlich vermeiden, sie jedes Mal, wenn sie benötigt wird, doppelt zu verwenden. Der Stundenplan (60 * 15)! = Stundenplan (900) war eine kleine Überraschung ...

Antworten auf die Frage(8)

Ihre Antwort auf die Frage