Ich habe ein minder großes Problem (was heißen soll, dass es nicht überlebenswichtig ist).
Ich habe heute mal ein PHP-Skript geschrieben, dass mir ausrechnen soll, wie lange der Start des UNIX-Timestamps (01.01.1970 00:00 Uhr) zurückliegt...
Fragt mich nicht warum... Denn das weiß ich selbst nicht
Auf jeden Fall Stoße ich da auf folgendes Problem:
Wenn ich für das Jahr generell 365 Tage und für einen Monat generell 30 Tage kalkuliere, werden mir die Jahre, Monate, Tage, Stunden, Minuten und Sekunden, die seit dem Start des Timestamps vergangen sind fast korrekt angezeigt (ein Monat zuviel?)... Jedoch fehlen drei Wochen...
Dann dachte ich mir: Klar, ich muss den Monat genauer berechnen... Also "365/12"...
Ergebnis: Nun fehlen auch noch die Tage... Sowohl bei Wochen als auch bei Tagen werden nun Null (0) angezeigt...
Okay... Dann war mir klar, dass das Jahr ja nicht genau 365 Tage hat. Also schnell bei Wikipedia reingeschaut und die mittlere Jahreslänge herausgesucht...
Diesmal: Jahre, Monate und Wochen werden richtig berechnet, jedoch der Rest falsch...
Da ich mir dachte, dass meine Formel falsch sein könnte, habe ich eine zweite hinzugefügt, die jedoch das gleiche ausgibt...
Gibt es eine Lösung für das Problem (das "wurmt" mich jetzt) oder kann man das nicht genau berechnen?
Hier der Quellcode:
<?php include '../includes/Head.inc'; /* Umrechnungsfaktoren */ $umminute = 60; $umstunde = 3600; $umtag = 86400; $umwoche = 604800; $umjahr = 31556952; /* Laut Wikipedia hat das durchschnittliche Jahr 365 Tage, 5 Stunden, 49 Minuten und 12 Sekunden. */ $ummonat = $umjahr / 12; /* time() in Minuten, Stunden, Tagen, Wochen, Monaten und Jahren */ $minuten = time() / $umminute; $stunden = time() / $umstunde; $tage = time() / $umtag; $wochen = time() / $umwoche; $monate = time() / $ummonat; $jahre = time() / $umjahr; echo "<table>"; echo "<tr><td>time():</td><td>" . time() . "</td></tr>"; echo "<tr><td>time() in Minuten:</td><td>" . $minuten . "</td></tr>"; echo "<tr><td>time() in Stunden:</td><td>" . $stunden . "</td></tr>"; echo "<tr><td>time() in Tagen:</td><td>" . $tage . "</td></tr>"; echo "<tr><td>time() in Wochen:</td><td>" . $wochen . "</td></tr>"; echo "<tr><td>time() in Monaten:</td><td>" . $monate . "</td></tr>"; echo "<tr><td>time() in Jahren:</td><td>" . $jahre . "</td></tr>"; echo "</table>"; /* Seit dem 01.01.1970 sind ... vergangen - Versuch 1 */ $bla = floor($jahre) . " Jahre, "; $bla = $bla . floor((time() % $umjahr)/$ummonat) . " Monate, "; $bla = $bla . floor(((time() % $umjahr)%$ummonat)/$umwoche) . " Wochen, "; $bla = $bla . floor((((time() % $umjahr)%$ummonat)%$umwoche)/$umtag) . " Tage, "; $bla = $bla . floor(((((time() % $umjahr)%$ummonat)%$umwoche)%$umtag)/$umstunde) . " Stunden, "; $bla = $bla . floor((((((time() % $umjahr)%$ummonat)%$umwoche)%$umtag)%$umstunde)/$umminute) . " Minuten und "; $bla = $bla . floor(((((((time() % $umjahr)%$ummonat)%$umwoche)%$umtag)%$umstunde)%$umminute)) . " Sekunden <br><br>"; echo $bla; /* Seit dem 01.01.1970 sind ... vergangen - Versuch 2 */ $monate2 = floor((time() - (floor($jahre)*$umjahr))/$ummonat); $wochen2 = floor((time() - (floor($jahre)*$umjahr) - ($monate2*$ummonat))/$umwoche); $tage2 = floor((time() - (floor($jahre)*$umjahr) - ($monate2*$ummonat) - ($wochen2*$umwoche))/$umtag); $stunden2 = floor((time() - (floor($jahre)*$umjahr) - ($monate2*$ummonat) - ($wochen2*$umwoche) - ($tage2*$umtag))/$umstunde); $minuten2 = floor((time() - (floor($jahre)*$umjahr) - ($monate2*$ummonat) - ($wochen2*$umwoche) - ($tage2*$umtag) - ($stunden2*$umstunde))/$umminute); $sekunden2 = floor((time() - (floor($jahre)*$umjahr) - ($monate2*$ummonat) - ($wochen2*$umwoche) - ($tage2*$umtag) - ($stunden2*$umstunde) - ($minuten2*$umminute))); $bla2 = floor($jahre) . " Jahre, "; $bla2 = $bla2 . $monate2 . " Monate, "; $bla2 = $bla2 . $wochen2 . " Wochen, "; $bla2 = $bla2 . $tage2 . " Tage, "; $bla2 = $bla2 . $stunden2 . " Stunden, "; $bla2 = $bla2 . $minuten2 . " Minuten und "; $bla2 = $bla2 . $sekunden2 . " Sekunden <br><br>"; echo $bla2; include '../includes/Foot.htm'; ?>
EDIT:
Hier kann man sich das ganze mal ansehen (die Zahlen die dabei verwendet werden sind momentan die gleichen, die ihr hier seht):
Timestamp Umrechnung
Dieser Beitrag wurde von Mr_Maniac bearbeitet: 24. Juli 2005 - 18:09