Angenommen, ich habe einen Unix-Zeitstempel in PHP. Wie kann ich meinen PHP-Zeitstempel auf die nächste Minute runden? Z.B. 16:45:00 im Gegensatz zu 16:45:34?Runden php Zeitstempel auf die nächste Minute
Danke für Ihre Hilfe! :)
Angenommen, ich habe einen Unix-Zeitstempel in PHP. Wie kann ich meinen PHP-Zeitstempel auf die nächste Minute runden? Z.B. 16:45:00 im Gegensatz zu 16:45:34?Runden php Zeitstempel auf die nächste Minute
Danke für Ihre Hilfe! :)
Wenn der Zeitstempel eine Art Zeitstempel Unix ist, einfach
$rounded = round($time/60)*60;
Wenn es der Stil, den Sie angegeben ist, können Sie ihn einfach in einen Zeitstempel Unix Stil und zurück konvertieren
$rounded = date('H:i:s', round(strtotime('16:45:34')/60)*60);
round()
wird verwendet, um sicherzustellen, dass es auf x
für Werte zwischen x - 0.5 <= x < x + 0.5
rundet. Wenn Sie immer (wie angegeben) immer abrunden wollen Sie floor()
oder die Modulo-Funktion
$rounded = floor($time/60)*60;
//or
$rounded = time() - time() % 60;
Yacoby, danke für die ausführliche Erklärung! Nun, da Sie es erwähnt haben, ist round() die Funktion, die ich am liebsten habe. Macht mehr Sinn in meiner Anwendung. :) – Lyon
Ah Damm nutzen könnten. Beat mich dazu :)
Das war meine Lösung auch.
<?php
$round = (round (time()/60) * 60);
echo date('h:i:s A', $round);
?>
hehe, ich schätze deine Hilfe sehr! Vielen Dank :) – Lyon
Eine Alternative ist dies:
$t = time();
$t -= $t % 60;
echo $t;
ich gelesen habe, dass jeder Aufruf von time()
in PHP den ganzen Weg durch den Stapel in die OS gehen musste zurück. Ich weiß nicht, ob das in 5.3+ geändert wurde oder nicht? Der obige Code reduziert die Anrufe auf die Zeit() ...
Benchmark-Code:
$ php -r '$s = microtime(TRUE); for ($i = 0; $i < 10000000; $i++); $t = time(); $t -= $t %60; $e = microtime(TRUE); echo $e - $s . "\n\n";'
$ php -r '$s = microtime(TRUE); for ($i = 0; $i < 10000000; $i++); $t = time() - time() % 60; $e = microtime(TRUE); echo $e - $s . "\n\n";'
$ php -r '$s = microtime(TRUE); for ($i = 0; $i < 10000000; $i++); $t = floor(time()/60) * 60; $e = microtime(TRUE); echo $e - $s . "\n\n";'
Interessanterweise über 10.000.000 itterations alle tatsächlich drei gleichzeitig tun;)
16.45.00 noch hat Sekunden ... Ich denke, du meinst, du willst auf die nächste Minute rasen, anstatt Sekunden zu entfernen. – Layke
Ich habe gerade PHP installiert, damit ich Ihnen den Code dafür geben kann. Ich will nicht raten, weil ich die Zeit hasse(). Ich werde in 10 Minuten antworten, wenn niemand sonst hat. – Layke
@Laykes http://codepad.org/ ist gut für schnelle Code-Checks – Yacoby