PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Zeit umrechnen



Zack
08.03.2004, 16:26
<?php
$min=0;
$stund=0;
$sec=550;
while ($sec>59)
{
$sec-60;
$min++;
}
while ($min>59)
{
$min-60;
$stund++;
}
echo("h min sek<br>");
echo("$stund : $min : $sec");
?>


Das script ist vielleicht nicht allerschönst geschrieben, funktioniert aber soweit. allerdings nur, wenn der wert $sec unter 59 ist, ansonsten gibt es:



Fatal error: Maximum execution time of 30 seconds exceeded in C:\Programme\Apache Group\Apache2\htdocs\index.php on line 15


nur frag ich mich, warum das interpretiewren eines solch simplen textes so lange dauert. oder sit irgentwo ein grober schlitzer drin?

wäre für jede antwort dankbar!

btw: mein webserver: http://164.25.181.23/

--
zack

Freezy
08.03.2004, 18:10
Ich kenn mich in PHP nicht wirklich aus, aber ich poste einfach mal was mir aufgefallen ist.


Den Part:

while ($sec>59)
{
$sec-60;
$min++;
}

würde ich ersetzen durch:

if ($sec>59)
{
&sec == 0;
$min++;
}

Genauso würde ich auch mit den minuten verfahren. Mit [§sec-60;] setzt du IMMO nicht den wert von $sec sondern rechnest ihn nur. Ich glaube das müsste so heissen [$sec == $sec - 60;]. Durch die verwendung einer while schleife bleibt das ganze dann hängen.

Probiers einfach aus, ich bin mir net sicher. :)

Zack
08.03.2004, 18:44
danke für die antwort. allerdigns möchte ich einen umrechner haben, der die zeit von sekunden in stunden und minuten umrechnet. und auf diese art bekomme ich maximal eine minute heraus, da nach dem einmaligen durchlauf der schleife die minuten auf 0 gesetzt werden. wenn ich aber sagen wir mal 180 sekunden eingeben würde bekomme ich 0:1:0 heraus. soweit ich das nu verstehe.
aber ich probier trotzdem mal, danke ;)

edit: das doppelte gleich nutzt man doch nur bei vergleichen, wie zb bei einer bedingung in der if anweisung, oder? also setzt man $sec nicht gleich null.... allerdings versteh ich dann die bedeutung noch weniger...
muss mich unbedingt mehr mit befassen...

--
zack

Dingsi
08.03.2004, 19:41
Ahh... PHP. ^___^

<?php
$min = 0;
$stund = 0;
$sec = 60;
while($sec > 59)
{
$sec = $sec - 60;
$min++;
}
while($min > 59)
{
$min = $min - 60;
$stund++;
}
echo("h min sek<br>");
echo("$stund : $min : $sec");
?>
Es muss wie Freezy gesagt hat $sec = $sec - 60; heißen. Das war's. Glaube ich. Also bei mir funzt's. ^^

Ineluki
08.03.2004, 19:44
hm .... dumme frage, aber warum machst du das ganze nicht einfach ueber div und modulo ?

$zeit = 550;
$min = $zeit / 60;
$sec = $zeit % 60;
$hou = $min / 60;
$min = $min % 60;

soltle eigentlich so in etwa klappen

Zur erklaerung / sei die Ganzzahldivision und % der Rest der Ganzzahldivision

Gruss Ineluki

Zack
08.03.2004, 20:05
Original geschrieben von Ineluki
hm .... dumme frage, aber warum machst du das ganze nicht einfach ueber div und modulo ?

keine dumme frage. :p
ich bin einfach noch nciht soweit. momentan spiele ich einfach mal ein wenig mit den sachen und hoffe, dass es funktioniert. modulo hatte ich bisher erst in c und wusste nicht, ob es ebenfalls in php anwendbar ist.

danke @ DragonThorm funktioniert!!
habe also quasi

"$whatever=" vor den eigentlichen rechnungen vergessen. dachte es würde automatisch der wert überliefert.
vielen dank ;)

Dingsi
08.03.2004, 20:16
mhh..mhh. So:
echo date("H:i:s", mktime(0,0,105));Das ist die einfachste mögliche Methode, swiw.
Mit mktime(h,m,s) erhält man nen UNIX-Timestampt, mit date("H:i:s") formatiert man diesen wieder in h:m:s. (In date() muss es i heißen)
Hier (http://www.selfphp.info/funktionsreferenz/datums_und_zeit_funktionen/date.php) kann man die ganzen Formatierungsmöglichkeiten von date() einsehen. SelfPHP (http://www.selfphp.info/) ist sowieso in fast allen Dingen zu empfehlen. Man findet hier sogut wie alle normalen PHP-Befehle. Falls man doch ne komplette Referenz haben will ist http://www.php.net/ dann besser.

Zack
08.03.2004, 20:34
hab hier schon nen dicken php wälzer liegen, der über 1200 umfasst. hatte nur etwas zu kurz gedacht. wollte ja im endeffekt einfach die eingegebenen sekunden in tage, stunden, minuten sekunden umrechnen und ausgeben lassen. umd läuft inzwischen auch mit auswahl, ob es nur eine sekunde, oder mehrere sind (iss aj net allszuschwer :D)

danke nochmals. werd mich wohl in nächster zeit öffters hier melden müssen, bei meiner tollpatschigkeit in mancherlei hinsicht :p

--
zack