Timestamp zu groß um in Stunden umzurechnen ?

  • Hi,

    bin hier auf ein Merkwürdiges Problem gestoßen:

    ich habe folgenden Code:

    idate('H', $time);

    $time ist in meinem Fall "84448".

    Wenn ich aber mit date oder idate damit die Stunden rausfinden will, gibt er mir 0 zurück. Ich hab jetzt mal ein bisschen rumgerechnet und prinzipell versteh ich den Fehler auch irgendwo, aber ich habe da eine größere If-Abfrage, die mir einen Timestamp in Sekunden, Minuten, Stunden und Tagen ausgibt. Ab 7 Tagen wird das volle Datum angezeigt.

    Hier der Code (ich glaub da liegt irgendwo ein Denkfehler, aber der Rest funktioniert bis jetzt immer tadellos):

    Hat da jemand ne Idee ?

    EDIT:
    Ich schätze, dass es übrigens mit den Zeitzonen GMT+1 zu tun hat ...

    Lg

    PHP
    if(isset($this) || !isset($this)){ // that's the question...

    Einmal editiert, zuletzt von Teron Gerofied (10. Januar 2011 um 13:26)

  • Du solltest dir mal Gedanken machen, was einUnix-Timestamp ist, vielleicht fällt dir dann auf, dass das total unsinnig ist, was du da mit date/idate veranstaltest

  • Tage: $dif / 86400
    Stunden: $dif / 3600 % 24
    Minuten: $dif / 60 % 60
    Sekunden: $dif % 60
    So einfach geht das, man muss nicht bei jedem Scheiß mit den PHP-Standarfunktionen rumhampeln, scheint ne schlechte Eigenschaft bei PHP-Programmierern zu sein, überall müssen date, array_*, preg_replace etc. ins Boot geholt werden…

  • Tage: $dif / 86400
    Stunden: $dif / 3600 % 24
    Minuten: $dif / 60 % 60
    Sekunden: $dif % 60
    So einfach geht das, man muss nicht bei jedem Scheiß mit den PHP-Standarfunktionen rumhampeln, scheint ne schlechte Eigenschaft bei PHP-Programmierern zu sein, überall müssen date, array_*, preg_replace etc. ins Boot geholt werden…



    Ach scheiße stimmt Modulo gibts ja auch noch :D vergesse regelmäßig die existenz dieses Operators

    PHP
    if(isset($this) || !isset($this)){ // that's the question...
  • Das was du gemacht hast gibt dir den Stand der Stunde, der um diese Zeit war. Also in dem einen Fall genau 1 Tag nach dem 01.01.1970 und da war halt dann auch 0 ^^ Klar, das er dir da 0 zurückgibt.

    Don't follow me, I run into walls.

  • Tage: $dif / 86400
    Stunden: $dif / 3600 % 24
    Minuten: $dif / 60 % 60
    Sekunden: $dif % 60
    So einfach geht das, man muss nicht bei jedem Scheiß mit den PHP-Standarfunktionen rumhampeln, scheint ne schlechte Eigenschaft bei PHP-Programmierern zu sein, überall müssen date, array_*, preg_replace etc. ins Boot geholt werden…

    Naja... du hast natürlich recht, wenn es um die Berechnung reiner Zeiträume geht, und nicht um die Berechnung konkreter Tage, dann kann und sollte man es so machen wie du schreibst.
    Wenn man aber konkrete Daten berechnen möchte ist es durchaus sinnvoll die vorgesehenen Funktionen zu verwenden. Da können sich sonst sehr leicht Fehler einschleichen, einer der beliebtesten z.B. das Nicht-Berücksichtigen von Sommer-/Winterzeit.


    Passt zwar nicht exakt zum Thema, aber trotzdem ein interessanter Link über den ich kürzlich gestolpert bin:
    http://pumka.net/2010/10/24/why…erent-from-php/

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook