Andi: Date Objekt spinnt

Hallo,

seht euch mal diesen Code an und sagt mir dann was herauskomm:

helpDate = new Date(2004,9,25);
 alert(helpDate.toLocaleString());
 helpTime = helpDate.getTime() + (7*60*60*24*1000);
 helpDate.setTime(helpTime);
 alert(helpDate.toLocaleString());

Laut meinen Berechnungen müßte hier der 01/11/2004 herauskommen, denn der 25. Oktober + 7 Tage ist der 1. November.

Oder müssen wir jetzt unsere Rechengestzte ändern?

Nein, ernsthaft, wo liegt denn hier der Fehler?

Grüße
Andi

  1. hi,

    Oder müssen wir jetzt unsere Rechengestzte ändern?

    nein, aber du dich endlich mal damit abfinden, dass es in westeuropa sowas wie eine sommer- und winterzeit gibt :-)

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. Hallo,

      und wie kann ich das umgehen?

      Grüße
      Andi

      1. Hi,

        und wie kann ich das umgehen?

        das Problem hatte mich auch mal überrascht bei meiner Berechnung der Kalenderwoche. Ich habe hier einfach die Sommerzeit zusätzlich berücksichtigt über
        var Sommerzeit =(Datum.getUTCHours() > Datum.getHours()) ? 3600000 : 0;

        freundliche Grüße
        Ingo

        1. Hallo Ingo,

          <honig anwendung="ums Maul schmieren">abgesehen davon, dass es eine sehr schöne Seite ist</honig>

          das Problem hatte mich auch mal überrascht bei meiner Berechnung der Kalenderwoche. Ich habe hier einfach die Sommerzeit zusätzlich berücksichtigt über
          var Sommerzeit =(Datum.getUTCHours() > Datum.getHours()) ? 3600000 : 0;

          <kritik type="gemein">in welchen Zeitzonen liefert Deine Berechnung den richtigen Wert?</kritik>

          Freundliche Grüsse,

          Vinzenz

          1. Hi,

            var Sommerzeit =(Datum.getUTCHours() > Datum.getHours()) ? 3600000 : 0;

            <kritik type="gemein">in welchen Zeitzonen liefert Deine Berechnung den richtigen Wert?</kritik>

            auf jeden Fall schonmal in *unserer* Zeitzone. ;-)

            Aber ich sollte wohl besser noch erwähnen, daß die Berechnung in Zeitzonen östlich von Greenwich wohl generell verkehrt sein dürfte und in Zeitzonen westlich von Greenwich eine evtl. Sommerzeit nicht berücksichtigt werden würde.
            Oder wüßtest Du zufällig eine Methode, die Sommerzeitabweichung zeitzonen-unabhängig mittels Javascript festzustellen?

            freundliche Grüße
            Ingo

            1. Hi,

              var Sommerzeit =(Datum.getUTCHours() > Datum.getHours()) ? 3600000 : 0;
              <kritik type="gemein">in welchen Zeitzonen liefert Deine Berechnung den richtigen Wert?</kritik>

              auf jeden Fall schonmal in *unserer* Zeitzone. ;-)
              Aber ich sollte wohl besser noch erwähnen, daß die Berechnung in Zeitzonen östlich von Greenwich wohl generell verkehrt sein dürfte

              Aua. Du widersprichst Dir hier selbst.
              Du solltest Dich nochmal etwas über Geographie informieren.
              Insbesondere darüber, wo sich unsere Zeitzone von Greenwhich aus gesehen befindet ...

              cu,
              Andreas

              --
              Warum nennt sich Andreas hier MudGuard?
              Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
              1. Hi,

                Aua. Du widersprichst Dir hier selbst.
                Du solltest Dich nochmal etwas über Geographie informieren.
                Insbesondere darüber, wo sich unsere Zeitzone von Greenwhich aus gesehen befindet ...

                stimmt, Du hast Recht. Peinlich, wo ich doch schon öfter in England war.
                Aber mir ist gerade eine Idee gekommen, wie ich die Sommerzeit-Differenz unabhängig von der Zeitzone und davon, ob es sie in dem betreffenden Land überhaupt gibt, herausbekommen müßte:
                durch einen Vergleich von Datum.getUTCHours() und Datum.getHours() im Winter ermittle ich die Abweichung der Zeitzone und kann dann die Differenz beim Vergleich mit dem gesuchten Datum berücksichtigen. Mal ausprobieren...

                freundliche Grüße
                Ingo

                1. Hi,

                  durch einen Vergleich von Datum.getUTCHours() und Datum.getHours() im Winter

                  Date.getTimezoneOffset()

                  Date.getUTCHours() mit Date.getHours() zu vergleichen ist gefährlich - es gibt auch Zeitzonen, die um ein ungerades Vielfaches von 30 Minuten von UTC abweichen.

                  Im Iran ist es z.B. jetzt (wo es hier 17:22 ist) 18:52 - je nachdem, wann Du den Vergleich innerhalb einer Stunde machst, ist der Unterschied zwischen getHours und getUTCHours unterschiedlich.

                  cu,
                  Andreas

                  --
                  Warum nennt sich Andreas hier MudGuard?
                  Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                  1. Hi,

                    Date.getTimezoneOffset()

                    Date.getUTCHours() mit Date.getHours() zu vergleichen ist gefährlich - es gibt auch Zeitzonen, die um ein ungerades Vielfaches von 30 Minuten von UTC abweichen.

                    danke für den Hinweis. Und weil laut Selfhtml "Die Sommerzeit wird von dieser Methode nicht berücksichtigt." ist das wohl sehr gut nutzbar, um einen evtl. Sommerzeit-Unterschied in einer folgenden Abfrage herauszubekommen.

                    Aber wo Du Dich doch so gut mit Zeitzonen auskennst noch eine Frage: gibt es auch Länder, in denen im Winter (also z.B. am 1. Januar, den ich für einen Vergleich wählen würde) auf Sommerzeit umgestellt wird? Oder anders gefragt: gibt es ein Datum, an dem überall die normale Zeit der jeweiligen Zeitzone verwendet wird?

                    freundliche Grüße
                    Ingo

                    1. Hi,

                      Aber wo Du Dich doch so gut mit Zeitzonen auskennst noch eine Frage: gibt es auch Länder, in denen im Winter (also z.B. am 1. Januar, den ich für einen Vergleich wählen würde) auf Sommerzeit umgestellt wird? Oder anders gefragt: gibt es ein Datum, an dem überall die normale Zeit der jeweiligen Zeitzone verwendet wird?

                      So gut kenn ich mich da nicht aus.
                      Aber wenn es in der Süd-Hemisphäre Sommerzeit/DaylightSavingTime gibt, dann wäre das natürlich zu Zeiten der Fall, wo hier auf der Nord-Hemisphäre Winter ist.

                      cu,
                      Andreas

                      --
                      Warum nennt sich Andreas hier MudGuard?
                      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                      1. Hi,

                        Aber wenn es in der Süd-Hemisphäre Sommerzeit/DaylightSavingTime gibt, dann wäre das natürlich zu Zeiten der Fall, wo hier auf der Nord-Hemisphäre Winter ist.

                        das hatte ich mir auch schon überlegt. Aber egal, den Anspruch auf weltweises Funktionieren habe ich nun doch nicht;-)

                        freundliche Grüße
                        Ingo

                        1. Hi,

                          Aber wenn es in der Süd-Hemisphäre Sommerzeit/DaylightSavingTime gibt, dann wäre das natürlich zu Zeiten der Fall, wo hier auf der Nord-Hemisphäre Winter ist.
                          das hatte ich mir auch schon überlegt. Aber egal, den Anspruch auf weltweises Funktionieren habe ich nun doch nicht;-)

                          Weltweit? Das wäre wirklich ein etwas hoher Anspruch - wer weiß schon, welche Zeitsysteme auf von uns Menschen noch nicht entdeckten Planeten benutzt werden ...

                          cu,
                          Andreas

                          --
                          Warum nennt sich Andreas hier MudGuard?
                          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                          1. Hi,

                            Weltweit? Das wäre wirklich ein etwas hoher Anspruch - wer weiß schon, welche Zeitsysteme auf von uns Menschen noch nicht entdeckten Planeten benutzt werden ...

                            Kommt natürlich auf die Definition von Welt an;-)

                            Übrigens habe ich mich gerade mal gefragt, woher die Einteilung eines Tages in 24 bzw. 2*12 Stunden überhaupt kommt.
                            Zufall?
                            Je 1 Dutzend für Tag und Nacht?
                            In Anlehnung an die 12 Monate eines Jahres?

                            freundliche Grüße
                            Ingo

                            1. hi,

                              Übrigens habe ich mich gerade mal gefragt, woher die Einteilung eines Tages in 24 bzw. 2*12 Stunden überhaupt kommt.
                              Zufall?
                              Je 1 Dutzend für Tag und Nacht?
                              In Anlehnung an die 12 Monate eines Jahres?

                              http://de.wikipedia.org/wiki/Stunde, letzter satz.

                              gruß,
                              wahsaga

                              --
                              "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                              1. Hi,

                                http://de.wikipedia.org/wiki/Stunde, letzter satz.

                                danke, da hätte ich ja auch mal suchen können. ;-)

                                Obwohl das zwar die 60 Minuten und 60 Sekunden erklärt, aber nicht die 24 Stunden. Und so ganz richtig scheint das auch nicht dargestellt zu sein. Ich habe auf http://www.step-online.de/projekte/zeitmanag.html jetzt gefunden:
                                "Die von den Ägyptern eingeführten "Stunden" als Zeitmaß waren noch unterschiedlich lang. Bei den Babyloniern dagegen gab es die gleichbleibenden Großstunden als 6. Teil des Tages. Griechische Astronomen dann führten den 24. Teil eines Tages als gleichbleibende Stunde ein."

                                Aha, die Babylonier teilten den Tag also in 6 "Großstunden" (1/10 ihres Zahlensystems) ein und nicht in 12 bzw. 24...
                                Die nächste Frage wäre jetzt, woher die Griechen auf die Zahl 24 kamen.

                                Ganz nett auch Leserzuschriften beim Stern: http://www.stern.de/wissenschaft/natur/?eid=501586&id=506480&nv=ex_rt.

                                freundliche Grüße
                                Ingo

                      2. Hallo MudGuard,

                        Aber wenn es in der Süd-Hemisphäre Sommerzeit/DaylightSavingTime gibt, dann wäre das natürlich zu Zeiten der Fall, wo hier auf der Nord-Hemisphäre Winter ist.

                        Soweit hatte ich bei meinem Posting gar nicht gedacht :-( Durch die Diskussion ist mir erst richtig bewußt geworden, dass es nicht auf einfache Weise möglich ist, die Sommerzeit (ohne Angabe einer Zeitzone) in solchen Berechnungen zu berücksichtigen.

                        Freundliche Grüsse,

                        Vinzenz

            2. Hallo Ingo,

              <kritik type="gemein">in welchen Zeitzonen liefert Deine Berechnung den richtigen Wert?</kritik>
              auf jeden Fall schonmal in *unserer* Zeitzone. ;-)

              ...

              Oder wüßtest Du zufällig eine Methode, die Sommerzeitabweichung zeitzonen-unabhängig mittels Javascript festzustellen?

              Nein, meine Vorstellung, wie man es machen könnte, sind in diesem Thread widerlegt worden. Es ist keine schlechte Idee, die Rechnerzeit an UTC auszurichten :-)

              Freundliche Grüsse,

              Vinzenz

      2. Hi,

        und wie kann ich das umgehen?

        bei welchen Tageszeiten ist die Zeitumstellung garantiert kein Problem?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo,

    Laut meinen Berechnungen müßte hier der 01/11/2004 herauskommen, denn der 25. Oktober + 7 Tage ist der 1. November.

    Oder müssen wir jetzt unsere Rechengestzte ändern?

    Das Datumsobjekt ist doch flexibel genug:

    var helpDate,tage=7;
    helpDate=new Date(2004,9,25+tage);
    alert(helpDate.toLocaleString()); // Montag, 1. November 2004 00:00:00

    MfG, Thomas