PDA

Vollstndige Version anzeigen : sekunden umwandeln


noerion
29-06-2005, 17:41
Hallo zusammen

ich hab da mal ein kleines Problem.
ich habe einen Zeitwert in Sekunden und mchte den hochrechnen (Minuten, Tag, usw)
dazu habe ich auch mal eine Funktion geschrieben, die ist allerdings etwas klobig. jetzt wrde ich gerne wissen ob es ne besser Mglichkeit gibt, die auch nicht so viel Performance frisst, soll spter nmlich auf nem Server laufen

function zeitrechnen(&$zeit){
if($zeit > 60){
while($zeit > 60){
$zeit = $zeit - 60;
$min++;
if($min == 1){
$wertmin = "$min Minute";
}
else{
$wertmin = "$min Minuten";
}

if($min == 60){
$std++;
$min=0;
if($std == 1){
$wertstd = "$std Stunde";
}
else{
$wertstd = "$std Stunden";
}
}

if($std == 24){
$tag++;
$std=0;
if($tag == 1){
$werttag = "$tag Tag";
}
else{
$werttag = "$tag Tage";
}
}

if($tag == 365){
$jahr++;
$tag = 0;
echo "wertjahr: $wertjahr<br>";
if($jahr == 1){
$wertjahr = "$jahr Jahr";
}
else{
$wertjahr = "$jahr Jahre";
}
}
$wertsec = "$zeit Sekunden";
}
$wert= "$wertjahr $werttag $wertstd $wertmin";
}
else{
$wert = "weniger als 1 Minute";
}

return $wert;
}
kennt jemand so eine Funktion oder kann mir jemand helfen meine zu verbessern?

dachris
30-06-2005, 12:25
Hier hast du einige Beispiele http://www.php.net/manual/de/ref.datetime.php

Opendix
30-06-2005, 12:34
hab ich hier gefunden:

http://aktuell.de.selfhtml.org/tippstricks/programmiertechnik/zeitberechnung/

xabbuh
30-06-2005, 19:36
Noch etwas: http://php-faq.de/q/q-datum-intervall.html

Serp
01-07-2005, 02:42
Eigentlich lsst sich das relativ einfach machen. Du ermittelst erstmal die Anzahl der Jahre: Da musst du ja schauen, wie oft die Sekundenzahl von 365 Tagen in die Anzahl an Sekunden, die du hast, reinpasst. Dazu teilst du das durcheinander und streichst dann die Nachkommastellen weg. Diesen Effekt kannst du durch eine Umwandlung in eine Zahl vom Typ int erreichen.
Danach musst du nur noch die restlichen Sekunden nehmen. Die kriegt man sehr schn mit Hilfe des Modulo-Operators (%) raus. Der macht nmlich genau das, was du willst: Er teilt zwei Zahlen durcheinander und gibt dann den Rest zurck. 5 % 3 wre also zum Beispiel 2.

Damit kriegst du dann in etwa folgenden Code:


// Ein Tag hat 86400 Sekunden, $zeit ist der Wert den du untersuchen willst
$jahre = (int) ($zeit / (365 * 86400));
$zeit %= (365 * 86400);

$monate = (int) ($zeit / (30 * 86400));
$zeit %= (30 * 86400);

Das dann noch auf Tage, Stunden und Minuten erweitern und fertig ist das Ganze.