| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

02-08-2009, 12:28
|
|
Ejoni
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 3
|
|
strtotime() subtrahiert keine Stunden
Hallo habe mein Problem ja schon im Titel geschildert. Folgende Situation, ich bekomme 2 Strings die ich mit hilfe von strtotime() wandel und dann subtrahiere. Komischerweise kommt aber immer eine Std. zuviel dabei raus :-) Wenn ich später die Pausezeit(handelt sich um ein einfaches Zeiterfassungssystem) abziehe passiert das gleiche. Er rechnet die Minuten richtig aber die Stunden bleiben unverändert. Habe hier gerade schon mal im Forum gesucht, aber leider keine Lösung gefunden. Hier mal mein Code:
date_default_timezone_set('Europe/Berlin');
function zeitberechnung($a, $b) {
$anfang = strtotime($a);
$ende = strtotime($b);
$zeit = $ende - $anfang;
return date("H:i:s", $zeit);
}
die Zeit liegt so 11:59:59 vor. Hoffe mein Problem wird deutlich
|

02-08-2009, 12:54
|
|
pekka
PHP Master
|
|
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
|
|
Zeig mal konkrete Testdaten, wie sie reinkommen und rausgehen.
|

02-08-2009, 13:48
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Zeitstempel - Zeitstempel ergibt eine Zeitspanne. Klar, dass das nicht unbedingt passt. Wie sehen die Zeitstempel denn aus? Hast du mal nen paar Beispiele?
|

02-08-2009, 14:10
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Beachte:
PHP-Code:
date_default_timezone_set('Europe/Paris');
echo '<h1>testdaten</h1>';
echo date("Y-m-d H:i:s", strtotime('11:59:59')).'<br>';
echo date("Y-m-d H:i:s", strtotime('01:00:00')).'<br>';
echo '<h1>Kaputtes Ergebnis</h1>';
$ergebnis = strtotime('11:59:59') - strtotime('01:00:00');
echo date("Y-m-d H:i:s",$ergebnis).'<br>';
echo '<h1>Richtige Rechnung</h1>';
$ergebnis = strtotime('11:59:59 -1 HOURS');
echo date("Y-m-d H:i:s",$ergebnis).'<br>';
|

02-08-2009, 16:13
|
|
Ejoni
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 3
|
|
testdaten
also ganz normale Bürozeiten halt inder Form:
08:00:00 - 16:00:00
dann noch die Pausenzeit
00:45:00
aus diesen 3 soll die netto Arbeitszeit einfach errechnet werden. Das gelingt mir leider nur nicht wirklich :-) Vielen Dank schon mal für die Antworten
|

02-08-2009, 16:21
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Das in Unix Timestamps "umzurechnen", wäre eher unsinnig.
Wenn du nicht über Tagesgrenzen hinaus rechnen musst, dann machst du aus 16:00:00 einfach 16*60*60 + 0 * 60 + 0 Sekunden, aus den anderen Werten ebenso - und rechnest die Differenz dann wieder in Stunden:Minuten:Sekunden um (Modulo-Operator ist dabei hilfreich).
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

02-08-2009, 16:52
|
|
|
Ein etwas ungewöhnlicher Tipp - Mysql kann wunderbar mit Zeiten und Datum rechnen und zwar sehr direkt.
Bei einigen Dingen mach ich mir das sehr bequem und verwende dann einfach Mysql (da wird noch nicht einmal eine Tabelle nötig).
Beispielansatz:
SELECT CAST( '16:00:00' AS TIME ) - CAST( '08:00:00' AS TIME ) AS Arbeitszeit
|

02-08-2009, 17:06
|
|
Ejoni
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 3
|
|
@wahsaga, super danke so mache ich das. Vielen Dank für Eure Hilfe!
|

02-08-2009, 19:05
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von piratos
Ein etwas ungewöhnlicher Tipp - Mysql kann wunderbar mit Zeiten und Datum rechnen und zwar sehr direkt.
|
Von MySQL war bisher nicht die Rede - und wenn das gar nicht im Spiel ist, es jetzt für diese Berechnung mit rein zu bringen ... da würde ich sagen, ein etwas ungewöhnlicher Tipp.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

02-08-2009, 19:22
|
|
|
Es gibt halt auch andere Möglichkeiten an die man nicht so schnell denkt.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|