time() runden - Wie ?

Lil-rich

Erfahrenes Mitglied
Hallo Leute,

hab mal wieder ne Frääge ^^ Also ich hab das Problem, dass ich will, dass das Registrierungsdatum gerundet werden soll. IMmer auf die nächsten vollen 10 Minuten, also so:

Reg: 29.09.2007 18:59
Runden auf: 29.09.2007 19:00

Reg: 29.09.2007 19:23
Runden auf: 29.09.2007 19:30

usw.

Ich hab schon :google: befragt, aber hab leider nix passendes gefunden :( Hab auch schon überlegt einfach zu versuchen, den Timestamp zu runden, aber da rundet er bei meinen Versuchen nicht wirklich korrekt :suspekt: Es sollte halt möglichst auf die Sekunde stimmen...

Wäre echt cool, wenn mir jemand helfen könnte !
Danke schonmal

Greetz
Lil-rich
 
Auf die Schnelle. Kann u.U. Denk- und Syntaxfehler enthalten :)
PHP:
$time = time(); 
$min = round((date('i', $time) / 60), 1) * 100; 
$newTime = mktime(date('H', $time), $min, 0, date('m', $time), date('d', $time), date('Y', $time));

Nachtrag
Doch ein Denkfehler. Ist korrigiert, sollte jetzt klappen!
 
Zuletzt bearbeitet:
Hi

du kannst das doch exploden und dann eben auf volle halbe stunden runden.

PHP:
$a = "29.09.2007 18:59"
$a_explode = explode(" ", $a); //Datum und Uhrzeit trennen
$time = explode(":", $a_explode[1]); // Nach stunden und Minuten trennen

$round_up = 0; // Variable die Stundenaufrunden bestimmt

if($time[1] > 0 && $time[1] <=30){
   $insert_time_tostring = "30";
} elseif($time[1] > 30 && $time[1] <= 59){
   $insert_time_tostring = "00";
   $round_up = 1;
} else {
   $insert_time_tostring = "00";
}

if($round_up){
  $time[0]++;
}
    $return_string = $a_explode[0] . " " . $time[0] . ":" . $insert_time_tostring;

ich habs nicht geprüft, aber es sollte so funktionieren.
 
Ich denke mal, dass die Werte als Unix-Zeitstempel vorliegen:
PHP:
$timestamp = ceil($timestamp/600)*600;
 
Ok, vielen DAnk :) An explode hab ich gar nicht gedacht, sollte auch leicht funktionieren, aber ich denke Gumbos Lösung ist um einiges eleganter und leichter ^^

Danke an beide Lösungen ! ;-)

€dit: Sry hab die oberste Lösung übersehen ^^ Auch danke an dich :)
 
Ich dachte halt die Daten liegt als Plaintext vor deswegen explode.
Selbst dann wäre es allerdings sinnvoll, die Zeitangabe nach dem Zerlegen in einen Zeitstempel umzuwandeln und die Berechnung damit fortzusetzen. Sonst müsste man nämlich noch allerhand Sonderfälle behandeln (Was passiert, wenn auf 0:00 aufgerundet wird? Was passiert, wenn auf 0:00 aufgerundet wird und das Datum der 31. Dezember ist? Was, wenn es der 28. Februar ist?…)

Grüße,
Matthias
 
Zurück