WinFuture-Forum.de: Differenz Mit Timestamps Berechnen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Differenz Mit Timestamps Berechnen


#1 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.117
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 04. August 2008 - 14:37

hallo,
ich bin grade aufm schlauch mit der Berechnung mit timestamps.
Folgendes.. ich habe einen timestamp in eine Datenbank gespeichert.
Nun möchte ich per echo, es handelt sich im die sprache PHP, die differenzs ausgeben, zum beispiel. "Der Eintrag existiert seit: 03:23:43"

Habe es so gemacht:
1. $timestamp=time(); wird in die Datenbank eingefügt
2.Differenzs bilden
$differenz=time()-$row_bwar->zeit; //$row_bwar->zeit ist der timestamp in der Db
$differenz=date("H:i:s",$differenz);

3. ausgeben
echo $differenz;

Ich glaube nun aber dass er etwas falsches ausgibt, es müsste eine Stunde zu viel sein!

Wie mache ich das richtig?
Achja, es kommt das gleiche dabei raus wenn ich anstatt time() mktime() nehme.... :-O+

Gruß,
Toasterfraktion
0

Anzeige



#2 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 04. August 2008 - 15:14

Das funktioniert nicht, da wir eine Zeitverschiebung zu GMT haben.

Der Timestamp 0 entspricht
  • Januar 1 1970 00:00:00 GMT
  • Januar 1 1970 01:00:00 CET

D.h. Timestamp 3600 ist bei uns folgerichtig 02:00 Uhr.

Wieder mal habe ich eine Lernpause eingelegt und einen Funktion geschrieben, die die Differenz menschenlesbar zurückgibt.
$beginn = date('U', time()-3*24*3600-5*3600-5*60-45); //Testdatum

echo zeit_differenz($beginn,time());

function zeit_differenz($zeit1, $zeit2) {
	$differenz = abs($zeit1 - $zeit2); 	//Reihenfolge von $zeit1, $zeit2 egal
	
	$sec = $differenz % 60;
	$min = $differenz / 60 % 60;
	$std = $differenz / 3600 % 24;
	$tag = floor($differenz / (24*3600));
	
	if ($tag > 0) {
		return $tag.' d '.$std.' h '.$min.' min '.$sec.' s';
	}
	if ($std > 0) {
		return $std.' h '.$min.' min '.$sec.' s';
	}
	if ($min > 0) {
		return $min.' min '.$sec.' s';
	}
	return $sec.' s';
}

Keine Garantie auf fehlerfreie Funktion ;)

Gruß,
Stefan

Dieser Beitrag wurde von Diewie bearbeitet: 04. August 2008 - 15:15

0

#3 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.221
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 04. August 2008 - 16:17

Also wenn immer nur 1 Stunde zuviel rauskommt, würd ich bei der Differenzbildung einfach noch 3600 abziehen.
Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#4 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.117
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 04. August 2008 - 16:20

Ja, stimmt schon aber wer weiß ob das immer so bleibt, mit Diewies Methode kallpt es,
dankeschön!
0

#5 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 04. August 2008 - 16:28

Beitrag anzeigenZitat (Gitarremann: 04.08.2008, 17:17)

Also wenn immer nur 1 Stunde zuviel rauskommt, würd ich bei der Differenzbildung einfach noch 3600 abziehen.

Beitrag anzeigenZitat (Toasterfraktion: 04.08.2008, 17:20)

Ja, stimmt schon aber wer weiß ob das immer so bleibt, mit Diewies Methode kallpt es,
dankeschön!

Nein, während der Winterzeit (MESZ = GMT+2) wäre es um 2 Stunden falsch.
Schön das es klappt. ;)

Gruß,
Stefan

Dieser Beitrag wurde von Diewie bearbeitet: 04. August 2008 - 16:28

0

#6 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.117
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 04. August 2008 - 16:43

Aber in deinem Script wurde doch die Winterzeit nicht berücksichtigt oder?
Kann man das noch irgendwie machen?
0

#7 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 04. August 2008 - 16:46

In meinem Skript wird date() gar nicht verwendet. Die Differenzen werden alle so berechnet und sind dadurch immer gültig.

Gruß,
Stefan
0

#8 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.117
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 04. August 2008 - 17:56

Gut :-)

So jetzt habe ich noch ein paar andere Kleinigkeiten! Es hat nun eigentlich nichts mit dem Thema am Hut, soll ich wenns Kleinigkeiten sind nen neues Thema starten?

Ich machs mal, nicht sauer sein Admins! :-P

gruß,
Toasterfraktion
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0