Zeitproblem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zeitproblem

    PHP-Code:
    <?

    # Zeittest


    # Zeit umwandeln
    $t[timestamp] = mktime(0,0,0,10,19,2003); // std, min, sec, mon, tag, jahr

    # berechnen
    $t[rueckreise] = 10 * 86400 + $t[timestamp] - 86400;

    # zurückwandeln
    $t[abreise] = date("d.m.Y",$t[timestamp]);
    $t[rueckreise] = date("d.m.Y",$t[rueckreise]);

    # ausgabe
    echo "$t[abreise] - $t[rueckreise]";

    ?>
    Hi, kann mir das mal einer erklären?

    wieso gibts beim 19.10.2003 das falsche Datum aus? bei nem Datum im Januar klappts aber. Wenns geht, wäre nett, wenn ihrs mal bei euch laufen lasst.

    Dank Euch!

  • #2
    mach doch sowas hier:

    # berechnen
    $t[rueckreise]= mktime(0,0,0,10,19+$tage,2003);
    Zuletzt geändert von MelloPie; 13.03.2003, 21:23.
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      in meinem script habe ich das mktime gar nicht, weil ich da direkt den timestamp aus der db hole.

      Mein Problem ist, wenn ich o.g. Script mit nem Datum von Januar füttere, dann klappts wunderbar. Aber im Oktober macht er Faxen. Es sieht so aus, als ob er denn Sonntag doppelt zählt.

      Wär cool, wenn das mal einer installieren kann.

      Kommentar


      • #4
        ausgabe durch obiges script

        Code:
        19.10.2003 - 27.10.2003
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          und wenn wir zählen:
          1. 19
          2. 20
          3. 21
          4. 22
          5. 23
          6. 24
          7. 25
          8. 26
          9. 27
          (10. 28)

          kannst du dann auch mal ein datum im Jan. angeben?

          Kommentar


          • #6
            do it yourself ...

            http://www.fehlercodes.de/trash/tobi...on=1&jahr=2005
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Erkennt ihr jetzt mein Problem?

              Im Oktober zählt der einen Tag zu wenig. Kann mir mal einer erklären, woher das kommt?

              Januar macht der richtig, Oktober hat der ein Problem???

              Kommentar


              • #8
                Original geschrieben von TobiaZ
                Januar macht der richtig, Oktober hat der ein Problem???
                kann es vllt. sein, dass da dann genau der wechsel zwischen sommer- und winterzeit dazwischen liegt?

                wenn dein timestamp sich dann genau auf 0:00 uhr des tages bezieht, bekommst du natürlich bei einem dazwischen liegenden wechsel von sommer- auf winterzeit eine stunde weniger, wenn du 10 * 86400 sekunden drauf rechnest, also 23:00 am vortag.



                lösung des problems wäre z.b. dass du nicht von einem timestamp mit uhrzeit 0:00 ausgehend rechnest, sondern einfach 12 uhr mittags nimmst und dann 10 * 86400 drauf rechnest. dann bekommst du zwar einen tag mit 11 uhr als ergebnis, aber wenigstens das datum ist immer noch das gleiche...
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Ich hatte ja schon fast alles durch (Schaltjahre, Zeitverschiebung, 1/4 Tag pro Jahr meh, ...). Aber Umstellung hab ich nicht gedacht. Ich bins gerade mal durchgegangen, das wirds dann sein. Die Umstellung erfolgt nämlch an dem erwähnten Sonntag (der 26.10.).

                  Ich denke es reicht aus, wenn ich aus dem hier
                  PHP-Code:
                  # berechnen
                  $t[rueckreise] = 10 86400 $t[timestamp] - 86400
                  einfach die hälte mache, also
                  PHP-Code:
                  # berechnen
                  $t[rueckreise] = 10 86400 $t[timestamp] - 43200
                  Dank euch!

                  Kommentar


                  • #10
                    Original geschrieben von TobiaZ
                    Ich denke es reicht aus, wenn ich aus dem hier [...] einfach die hälte mache
                    sofern deine start-timestamps alle in der ersten tageshälfte liegen, ja.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Klappt übrigends jetzt wunderbar, hab mir da echt keinen Reim drauf bilden können.

                      Zur Info: Ich hab in der DB die Daten (von Datum) als DATE gespeichert. Also nur 2003-03-14, daraus hole ich mir den UNIXTIMESTAMP und arbeite damit weiter. Folglich liegen alle Daten wie von dir genannt mit Uhrzeit 00:00 vor.

                      Kommentar


                      • #12
                        Original geschrieben von TobiaZ
                        Zur Info: Ich hab in der DB die Daten (von Datum) als DATE gespeichert. Also nur 2003-03-14
                        wenn's jetzt läuft ist ja ok, aber wäre es nicht auch eine möglichkeit direkt im select-statement die berechnung des rückreise-termins mit INTERVAL zu machen...?
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          das habe ich gestern auch schon überlegt, als mir das problem aufgefallen ist. eigentlich sollte man das so machen. ich werd mal sehen, was ich da mach. aber danke für den tipp.

                          Kommentar

                          Lädt...
                          X