• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Eigene Uhrzeitformatierung klappt nicht wirklich

Max T.

Mitglied
Hallo beisammen,
ich trage Uhrzeiten in eine Datenbank ein. Dabei lasse ich mir vom Script via time() eine Sekundenzahl ausgeben und wandle sie dann mit

floor($differenz/3600).':'.floor($differenz/60).':'.($differenz % 60)

in ein Format à la Stunden:Minuten:Sekunden um. ($differenz ist ein int-Wert mit den Sekunden) Nur kommen da manchmal seltsame Uhrzeiten wie z.B. 2:146:7 heraus.
Was mache ich denn falsch?

Beste Grüße
Max
 
Werbung:
Hallo,
dann versuche ich es mal verständlicher: Es soll letztendlich die Zeit als String gespeichert werden. Also so:

$Zeit = floor($sekunden/3600).':'.floor($sekunden/60).':'.($sekunden% 60);

$sekunden ist dann ein int-Wert wie z.B. 1783.

VG Max
 
Werbung:
PHP:
echo date('H:i:s', time());
[...]
Wieso guckt nie jemand in die Doku von PHP :D

So schlau war ich auch schon..

Ich möchte ja kein Datum formatieren sondern eine Zeitspanne in Sekunden in ein anderes Format (Stunden:Minuten:Sekunden) konvertieren. Eigentlich sollte mein Skipt klappen aber es sind trotzdem seltsame Werte herausgekommen. Vielleicht mag es sich ja auch mal jemand anschauen und mir dann eine Hilfestellung geben.
 
Werbung:
du musst die stunden die du ausrechnest anschliessend von der Zeit in Sekunden subtrahieren. Sonst hast du die Stunden die du schon ausgerechnet hast bei den minuten nochmals drin
 
Werbung:
Aso, ok so wolltest du das haben. Da hätte ich auch noch eine Möglichkeit

PHP:
$timestamp = '1155675712'; // 15.08.2006 23:01:52

$Date1 = new DateTime();
$Date2 = new DateTime();

$Date1->setTimestamp(time());
$Date2->setTimestamp($timestamp);

$diff = $Date2->diff($Date1);

echo "<pre>";
print_r($diff);
echo "</pre>";

Als Ausgabe bekommst du dann folgendes
Code:
DateInterval Object
(
[y] => 8
[m] => 0
[d] => 0
[h] => 12
[i] => 50
[s] => 28
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 0
[days] => 2922
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)

Das wären denn umgerechnet
70140 Stunden
50 Minuten
28 Sekunden
 
Hallo,
danke für das Skript ;)
Aber bei der Lösung muss man ja auch wieder umrechnen? Zumindest wenn man längere Zeitabschnitte hat als einen Tag. Ich hätte es jetzt durch die Differenz zweier timestamps gemacht, oder ist das nicht elegant?
VG
 
Werbung:
So schlau war ich auch schon..

Ich möchte ja kein Datum formatieren sondern eine Zeitspanne in Sekunden in ein anderes Format (Stunden:Minuten:Sekunden) konvertieren. Eigentlich sollte mein Skipt klappen aber es sind trotzdem seltsame Werte herausgekommen. Vielleicht mag es sich ja auch mal jemand anschauen und mir dann eine Hilfestellung geben.

So schlau warst du offenbar nicht. Ersetze time() durch deine sekunden*1000 und das tut genau was du willst. Dann musst du dich auch nicht um Kram wie führende Nullen etc. kümmern.
 
Hallo,
meinst Du etwa so?

date('H:i:s',$sekunden*1000);

?! Gibt aber für mich irgendwie keinen Sinn, weshalb muss man mal 1000 rechnen?
Habe jetzt mal die Funktion geschrieben:

function zeitumrechnung($sekunden){
if(gettype($sekunden) == "string"){
$sekunden = intval($sekunden);
}
$stunden = floor($sekunden/3600);
$Abzug = $stunden * 3600;
$minuten = floor(($sekunden-$Abzug)/60);
$sekunden = $sekunden % 60;

return $stunden.":".$minuten.":".$sekunden;
}

Also eigentlich müsste das ja auch funzen. Blos kommen da schon wieder seltsame Zeiten heraus, z.B. 838:59:59, obwohl dies aufgrund zu kleiner Zeitspannen nicht sein kann...
VG Max
 
Werbung:
Achso okay :D Klingt interessant, aber time() liefert doch auch einen Wert in Sekunden, der dann verrechnet wird? Also müsste man doch dann irgend ein Datum bekommen, das schon lange her war
 
Hallo,
danke für das Skript ;)
Aber bei der Lösung muss man ja auch wieder umrechnen? Zumindest wenn man längere Zeitabschnitte hat als einen Tag. Ich hätte es jetzt durch die Differenz zweier timestamps gemacht, oder ist das nicht elegant?
VG

Bei meinem Script ist das umrechnen aber doch recht easy. Die Tage multiplizierst mit 24. Weil ja ein Tag 24 Std hat und dann rechnest du
[h] => 12
noch mit rauf, so hättest du die stunden differenz zwischen zwei Datumsangaben.
[ i ] => 50
[ s ]=> 28

"i" sind denn die Minuten und "s" die Sekunden.
 
Zurück
Oben