Hallo Miteinander,
bisher habe ich ja immer ausschliesslich Rieke mit meinen (zugegebenermaßen) manchmal etwas merkwürdigen Fragen genervt
) - ...
Nun seid Ihr dran
:
Kann sich jemand von Euch erklären, warum die getdate Funktion sich bei einem bestimmten Monat "verrechnet"? Um es etwas plastischer zu machen, habe ich mal folgendes kleines Skript erstellt:
http://www.german-law.net/bug.php
Der PHP Code lautet:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35: |
function get_timestring($timestamp)
{
$t = getdate($timestamp);
if ($t['minutes']<10) $t['minutes']="0".$t['minutes'];
if ($t['hours']<10) $t['hours']="0".$t['hours'];
$zeitpunkt_string = $day_item[$t['wday']]
. ", " . $t['mday'] . ". " . $t['mon'] . " ".$t['year']." - ".$t['hours'].":".$t['minutes'];
return $zeitpunkt_string;
}
$ts = 715046400;
for($i=1; $i <= 50; ++$i)
{
echo $ts." ~~> ".get_timestring($ts)." ";
$ts += 86400;
}
?>
|
Wie Ihr bei der Ausgabe des Skripts sicher bemerkt, verrechnet sich getdate vom 27.9.92 zum 28.9.92 genau um eine Stunde - d.h. die Differenz des timestamps zum vorherigen Tag ist zwar korrekt mit 86400 Sekunden, die Ausgabe der Stundendifferenz zeigt allerdings ein Minus von einer Stunde (ursprünglich Offset 2 Stunden, nach dem 28.9 ein Offset von nur noch 1 Stunde).
Habe ich da jetzt einen Denkfehler oder ist dass tatsächlich ein Bug in PHP?
Sicher fragen sich einige von Euch, worin nun die Relevanz dieses Fehler steckt
.. nun ich habe eine kleine Datenbank, in der ich Einträge (auch) nach Datum vornehme. Um die Suche im Archiv der Datenbank zu erleichtern, nutze ich einen generierten Kalender, der dann den Hit entsprechend markiert. Bei einem Eintrag am 30.9.92 kam dann der Kalender außer Tritt ... er wurde zum einen nicht mehr richtig generiert und zum anderen wurde der Hit nicht richtig angezeigt.
Ich habe des Problem bisher dadurch umgangen, indem ich für diesen einzelnen Fehler folgende Ausnahmebehandlungsroutine einsetze:
if ($start_tag == 717631200) $start_tag = 717634800;
Aber dat ist ja keine Lösung des Problems an sich ...
.
Hat jemand von Euch vielleicht eine Idee, woran dat liegen könnte?
Vielen Dank für Eure Geduld!
Mascha
[ Diese Nachricht wurde geändert von: Mascha am 2002-07-31 10:16 ]
[ Diese Nachricht wurde geändert von: Mascha am 2002-07-31 10:17 ]