Mammut: Tage runterzählen - ungenau

Hi,

ich habe einen Codeschnipsel, der mir die vollen verbleibenden Tage bis zu einem vorgegebeben Tag 23:59 Uhr berechnen soll. Um 00:00 Uhr Mitternacht oder eine Sekunde später soll es ein Tag weniger sein.

Heute um 00:30 Uhr wurde ein Tag zuviel berechnet (140 Tage bis Silvester), jetzt um 01:12 stimmt's (139 Tage).

Warum springt die Tageszahl nicht um 00:00 Uhr um?

  
$gewinn_letzter_tag = '2011-12-31';  
$noch_tage = floor(( strtotime(  $gewinn_letzter_tag.' 23:59' ) -time() ) / 86400) ;  
$noch_tage =( $noch_tage > 0 ) ? $noch_tage  : 0;  

Mammut.

  1. Hi,

    Warum springt die Tageszahl nicht um 00:00 Uhr um?

    Vermutlich, weil du den üblichen Fehler machst - anzunehmen, jeder Tag hätte 86400 Sekunden.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hi ChrisB,

      Vermutlich, weil du den üblichen Fehler machst - anzunehmen, jeder Tag hätte 86400 Sekunden.

      Die Jahre haben verschiedene Tage (Schaltjahre), die Monate auch. Nun behauptest du, die Tage wären verschieden lang.

      Jetzt warte ich darauf, dass jemand eine Woche entdeckt, die 6 oder 8 Tage hat. Das wäre doch eine Meldung auf der Titelseite der Blöd-Zeitung wert.

      Lasst uns danach suchen, Jungs.

      Mammut

      1. Hello,

        Vermutlich, weil du den üblichen Fehler machst - anzunehmen, jeder Tag hätte 86400 Sekunden.

        Die Jahre haben verschiedene Tage (Schaltjahre), die Monate auch. Nun behauptest du, die Tage wären verschieden lang.

        Jetzt warte ich darauf, dass jemand eine Woche entdeckt, die 6 oder 8 Tage hat. Das wäre doch eine Meldung auf der Titelseite der Blöd-Zeitung wert.

        Lasst uns danach suchen, Jungs.

        Dann fang mal 1582 an zu suchen nach den Tagen zwischen dem 04. und 15. Oktober.
        Oder such mal die Stunde zwischen 02:00 und 03:00 Uhr am 30. Oktober 2011, um 03:00 MESZ, die gibt es sogar doppelt.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. hi,

          Lasst uns danach suchen, Jungs.

          Dann fang mal 1582 an zu suchen nach den Tagen zwischen dem 04. und 15. Oktober.

          Och, soweit zurück musste gar nicht gehen. Beim letzten Jahreswechsel hahmse uns schon wieder ne Sekunde gestrichen, wie schon so oft, seufz.

          Hitto

          1. Hallo,

            Beim letzten Jahreswechsel hahmse uns schon wieder ne Sekunde gestrichen, wie schon so oft, seufz.

            dazu zwei Dinge:
            Erstens hast du in deiner Erinnerung nicht nur ein ±1-Problem, sondern sogar ein ±2-Problem, die letzte Schaltsekunde hatten wir nämlich beim Jahreswechsel 2008/2009.
            Zweitens werden *zusätzliche* Schaltsekunden *eingefügt*, nicht weggenommen, um unsere Zeitmessung an die über die Jahre oder Jahrhunderte abnehmende Rotationsgeschwindigkeit der Erde anzupassen.

            Ciao,
             Martin

            --
            Der Afrika-Forscher wird gefragt: "Stimmt es, dass man nicht von Löwen angefallen wird, wenn man eine Fackel trägt?" - "Kommt drauf an. Man muss die Fackel sehr schnell tragen."
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
            1. hi,

              Zweitens werden *zusätzliche* Schaltsekunden *eingefügt*,

              Warts ab bis zur nächsten Steuererklärung. Da wird Dir das alles wieder abgezogen ;)

              Hotti

              --
              Das Einzige, was Dir im Leben geschenkt wird, ist das Leben selbst.
            2. @@Der Martin:

              nuqneH

              Schaltsekunde […]
              Zweitens werden *zusätzliche* Schaltsekunden *eingefügt*, nicht weggenommen

              Das ist falsch (auch wenn’s in der deutschen Wikipedia so drinsteht). In der englischen ist’s richtig: Die Schaltsekunde dient zum Ausgleich; der kann in beide Richtungen erfolgen.

              Allerdings ist der Fall, dass eine Sekunde übersprungen wird, bisher noch nicht vorgekommen.

              Qapla'

              --
              Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
              (Mark Twain)
              1. Hi,

                Allerdings ist der Fall, dass eine Sekunde übersprungen wird, bisher noch nicht vorgekommen.

                Da die Tage jetzt aber kürzer geworden sind ...

                MfG ChrisB

                --
                RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
              2. Hallo,

                Die Schaltsekunde dient zum Ausgleich; der kann in beide Richtungen erfolgen.
                Allerdings ist der Fall, dass eine Sekunde übersprungen wird, bisher noch nicht vorgekommen.

                so hatte ich es auch gemeint: Die Festlegung erlaubt natürlich auch das Überspringen einer Sekunde; in der Regel wird aber eine zusätzlich eingefügt.

                Ciao,
                 Martin

                --
                Soziologen sind nützlich, aber keiner will sie haben.
                Bei Informatikern ist es gerade umgekehrt.
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              3. Hi there,

                Allerdings ist der Fall, dass eine Sekunde übersprungen wird, bisher noch nicht vorgekommen.

                Ich denke, bei einem geologischen oder astronomischen Ereignis, bei dem sich die Erdrotation beschleunigt, wäre das Überspringen von Schaltsekunden unser aller unbedeutendstes und kleinstes Problem...

      2. Hi,

        Vermutlich, weil du den üblichen Fehler machst - anzunehmen, jeder Tag hätte 86400 Sekunden.

        Die Jahre haben verschiedene Tage (Schaltjahre), die Monate auch. Nun behauptest du, die Tage wären verschieden lang.

        Behaupte ich nicht nur, ist so.

        Jetzt warte ich darauf, dass jemand eine Woche entdeckt, die 6 oder 8 Tage hat. Das wäre doch eine Meldung auf der Titelseite der Blöd-Zeitung wert.

        Jetzt warte ich darauf, dass du deine mentale Kapazität nicht auf unangebrachten Sarkasmus verschwendest, sondern stattdessen mal überlegst, welche Tage wohl länger/kürzer als „andere“ sind.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    2. Hi there,

      Vermutlich, weil du den üblichen Fehler machst - anzunehmen, jeder Tag hätte 86400 Sekunden.

      Hat er nicht?

      1. Om nah hoo pez nyeetz, Klawischnigg!

        Vermutlich, weil du den üblichen Fehler machst - anzunehmen, jeder Tag hätte 86400 Sekunden.

        Hat er nicht?

        abgesehen von Schaltsekunden durchschnittlich schon, genau wie der Mensch durchschnittlich weniger als zwei Beine hat.

        SCNR

        Matthias

        --
        1/z ist kein Blatt Papier. http://www.billiger-im-urlaub.de/kreis_sw.gif
        1. Hi there,

          abgesehen von Schaltsekunden _durchschnittlich_ schon, genau wie der Mensch durchschnittlich weniger als zwei Beine hat.

          Von Schaltsekunden weiss aber der PHP-Interpreter nix, und das ist in dem Zusammenhang das einzig Relevante...

          (von Menschen mit weniger als zwei Beinen einmal komplett abgesehen...;)

      2. Hi,

        Vermutlich, weil du den üblichen Fehler machst - anzunehmen, jeder Tag hätte 86400 Sekunden.

        Hat er nicht?

        Zwei Tage im Jahr weichen um 3600 Sekunden davon ab, und das sind die, an denen du nicht nur am Rad, sondern auch noch an der Uhr drehst ...

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Hallo,

          Zwei Tage im Jahr weichen um 3600 Sekunden davon ab, und das sind die, an denen du nicht nur am Rad, sondern auch noch an der Uhr drehst ...

          aber nein, man *lässt* drehen.
          Entweder per DCF-77, oder per NTP. Ich habe jedenfalls keine Uhr mehr, die ich selbst umstelle. :-)

          Ciao,
           Martin

          --
          Einer aktuellen Erhebung zufolge sind zehn von neun Ehefrauen eifersüchtig auf ihren Mann.
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        2. Hi there,

          Zwei Tage im Jahr weichen um 3600 Sekunden davon ab, und das sind die, an denen du nicht nur am Rad, sondern auch noch an der Uhr drehst ...

          ich stell meine Uhren nie um, die zeigen einfach, je nachdem wann ich sie gekauft habe, Winter- oder Sommerzeit.

          Dürfte aber mit dem Problem des OP nix zu tun haben...

          1. Om nah hoo pez nyeetz, Klawischnigg!

            ich stell meine Uhren nie um, die zeigen einfach, je nachdem wann ich sie gekauft habe, Winter- oder Sommerzeit.

            Es gibt, abgesehen von Namibia und Irland (lt. Wikipedia), keine Winterzeit, es gibt die MEZ und die MESZ. Winterzeit würde bedeuten, dass man im Winter Änderungen im Vergleich zur eigentlichen Zonenzeit vornimmt.

            Matthias

            --
            1/z ist kein Blatt Papier. http://www.billiger-im-urlaub.de/kreis_sw.gif
            1. Hallo,

              Es gibt, abgesehen von Namibia und Irland (lt. Wikipedia), keine Winterzeit, es gibt die MEZ und die MESZ. Winterzeit würde bedeuten, dass man im Winter Änderungen im Vergleich zur eigentlichen Zonenzeit vornimmt.

              soso, dann montierst du auf dein Auto also auch nicht Sommer- oder Winterreifen, sondern Sommer- oder Normalreifen?

              Wenn man zwei Dinge voneinander abgrenzt und eines mit dem Attribut "Sommer" versieht, ist es völlig selbstverständlich, dem Gegenstück das Attribut "Winter" zu geben. Auch wenn eines der beiden als Normalfall aufgefasst wird oder festgelegt ist.

              Ciao,
               Martin

              --
              Besteht ein Personalrat aus nur einer Person, erübrigt sich die Trennung nach Geschlechtern.
                (aus einer Info des deutschen Lehrerverbands Hessen)
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              1. Om nah hoo pez nyeetz, Der Martin!

                ... Winter... würde bedeuten, dass man im Winter Änderungen im Vergleich zur eigentlichen ... vornimmt.

                soso, dann montierst du auf dein Auto also auch nicht Sommer- oder Winterreifen, sondern Sommer- oder Normalreifen?

                Jetzt hast du aber nicht aufgepasst: Ich montiere selbstverständlich (im letzten Jahr auf ein Auto, das sonst bei schwierigen Bedingungen einfach in der Garage blieb, weil ich vom Gesetzgeber dazu gezwungen wurde) Winterreifen wenn ich von den Normalreifen wechsele.

                SCNR

                Matthias

                --
                1/z ist kein Blatt Papier. http://www.billiger-im-urlaub.de/kreis_sw.gif
              2. @@Der Martin:

                nuqneH

                Wenn man zwei Dinge voneinander abgrenzt und eines mit dem Attribut "Sommer" versieht, ist es völlig selbstverständlich, dem Gegenstück das Attribut "Winter" zu geben. Auch wenn eines der beiden als Normalfall aufgefasst wird oder festgelegt ist.

                Zumal der Normalfall mit 5 Monatan Dauer bei uns kürzer ist als der Sonderfall mit 7 Monaten.

                Qapla'

                --
                Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                (Mark Twain)
          2. Hi!

            Zwei Tage im Jahr weichen um 3600 Sekunden davon ab, und das sind die, an denen du nicht nur am Rad, sondern auch noch an der Uhr drehst ...
            ich stell meine Uhren nie um, die zeigen einfach, je nachdem wann ich sie gekauft habe, Winter- oder Sommerzeit.
            Dürfte aber mit dem Problem des OP nix zu tun haben...

            Was dürfte nix damit zu tun haben, deine Uhr(nicht)umstellpraxis oder dass heute 23:59 eine Stunde eher ist als am Jahresende (im Verhältnis zu UTC)?

            Lo!

            1. Hi there,

              Was dürfte nix damit zu tun haben, deine Uhr(nicht)umstellpraxis oder dass heute 23:59 eine Stunde eher ist als am Jahresende (im Verhältnis zu UTC)?

              Ich nehm zur Kenntnis, daß es unglaublich komplizierte Möglichkeiten gibt zu sagen, daß einfach die Serverzeit nicht stimmt...

              1. Hi!

                Was dürfte nix damit zu tun haben, deine Uhr(nicht)umstellpraxis oder dass heute 23:59 eine Stunde eher ist als am Jahresende (im Verhältnis zu UTC)?
                Ich nehm zur Kenntnis, daß es unglaublich komplizierte Möglichkeiten gibt zu sagen, daß einfach die Serverzeit nicht stimmt...

                Warum sollte sie nicht stimmen? Die verwendeten Funktionen arbeiten mit Lokalzeit und nicht mit UTC. Dadurch kommt bis zur Umstellung auf Normalzeit die eine Stunde Verschiebung gegenüber dem Jahresende zustande.

                Was PHP als Lokalzeit annimmt, lässt sich kunfigurieren. Es wird allerdings nicht besser, nähme er UTC-Funktionen (gm...) oder konfigurierte er UTC als Zeitzone für die verwendeten Funktionen. Dann wäre das Ergebnis dass die Tageszahl um 2 Uhr springt und zur Normalzeit um 1 Uhr. Er muss ermitteln, ob grad Sommerzeit ist (geht mit date()) und die eine Stunde wegkorrigieren.

                Lo!

  2. hi,

    Warum springt die Tageszahl nicht um 00:00 Uhr um?

    Es ist abhängig von der Zeitzone, wann der Tag wechselt.

    Hotti

  3. Hi there,

    Warum springt die Tageszahl nicht um 00:00 Uhr um?

    Nachdem Du das in PHP gelöst haben willst nehme ich einmal an, das Programm läuft auf einem Server und nicht auf Deinem Rechner. Und der kann nun einmal irgendeine und andere Zeit als Dein Rechner haben...