# Zahl in Zeit umwandeln



## SantaCruze (22. März 2007)

Hallo Zusammen  Und zwar suche ich eine Funktion, die eine beliebige Zahl in eine Zeitangabe ala Stunden / Minuten / Sekunden umwandeln kann. Hat da jmd zufällig gerade sowas zur Hand ?


----------



## Julian Maicher (22. März 2007)

Eine beliebige Zahl?
Mach mal ein Beispiel ..


----------



## Gumbo (22. März 2007)

Du meinst wahrscheinlich eine Sekundenanzahl in eine Stunden-Minuten-Sekunden-Anzeige zu formatieren.
Bis zu einem Wert von 86400 Sekunden, was einem Tag entspricht, geht das mit der date()-Funktion (Zeitzoneneinstellung berücksichtigen). Sonst muss du einfach die Sekundenanzahl durch 3600 teilen, was abgerundet der Anzahl der Stunden entspricht, diesen Wert mit 3600 multiplizieren und von der Anzahl der Sekunden subtrahieren, den Rest wiederum durch 60 teilen, was abgerundet der Anzahl der Minuten entspricht, diesen Wert mit 60 multiplizieren und wieder von der Restanzahl der Sekunden subtrahieren. Der Rest davon entspricht den übrig gebliebenen Sekunden.
	
	
	



```
$sekunden = 12345;
$sekunden -= ($stunden=floor($sekunden/3600)) * 3600;
$sekunden -= ($minuten=floor($sekunden/60)) * 60;
```
Sehr kompakte Schreibweise, ich weiß. Es geht auch verständlicher.


----------



## SantaCruze (22. März 2007)

Beispiel wäre halt
$zeit1 = 500
$zeit2 = 1000
$zeit3 = 3

$endtime = $zeit1+$zeit2*$zeit3

und aus der Endtime wo dann ja 4500 rauskommt will ich das Formatiert ausgeben. Daher X Stunden X Minuten X Sekunden.


----------



## Radhad (22. März 2007)

Und was stellen die Zahlen dar? Sekunden?


----------



## -GS-Master (22. März 2007)

Gehe mal stark davon aus ^^


----------



## SantaCruze (26. März 2007)

Ja die Zeit die in der DB eingetragen wird, ist Sekunden. Nun halt die Frage, hat jmd eine Funktion die sowas ausrechnen kann zur Hand ?


----------



## CIX88 (26. März 2007)

Sowas ?


```
function AnzSek ( $sek ) {
    $i = sprintf('%d : %02d : %02d : %02d ',
    floor($sek / 86400),
    floor($sek / 3600 % 24),
    floor($sek / 60 % 60),
    floor($sek % 60));
    return $i;
    }
```


----------



## dwex (26. März 2007)

CIX war schneller hier meine Funktion welche ich gerade geschrieben habe (mit dem Codeschnippsel von Gumbo:
	
	
	



```
function sekinzeit($sekunden) {

	$sekunden = (int)$sekunden;

    $sekunden -= ($stunden=floor($sekunden/3600)) * 3600;
    $sekunden -= ($minuten=floor($sekunden/60)) * 60;  

    $stunden = sprintf("%02d", $stunden);
    $minuten = sprintf("%02d", $minuten);
    $sekunden = sprintf("%02d", $sekunden);

    $zeit = $stunden.":".$minuten.":".$sekunden;

    return $zeit;

}
```
So wenn man jetzt z.B. folgendes mit der Funktion ausgibt (also 65 Sekunden):
	
	
	



```
echo sekinzeit(65);
```
Dann wird 00:01:05 für 0 Stunden, 1 Minute und 5 Sekunden ausgegeben.


----------

