chris: Sommerzeit Probleme

Hallo,
wenn ich folgendes Script aufrufe:
<script language="JavaScript">
<!--
 var jetzt = new Date();
 var Std = jetzt.getHours();
 alert(Std);
//-->
</script>
Wir mir immer noch die Winterzeit angezeigt. Warum?

Wenn ich es so schreibe:
<script language="JavaScript">
<!--
 var jetzt = new Date();
 var Std = jetzt.getUTCHours() + 2;
 alert(Std);
//-->
</script>
wird mir die Zeit zwar richtig angezeigt, allerdings leider zählt meine Uhr dann bis 26... bis sie auf den nächsten Tag springt.

Hat jemand eine passende Idee?

  1. Hallo chris,
    ich habe eine ähnlich Nachricht bereits schon vorher gepostet. Nur leider ohne Erfolg.

    Vielleicht hat diesmal jemand die rettende Idee :-)

  2. Hallo,

    wenn ich folgendes Script aufrufe:

    <script type="text/javascript">

    <!--
     var jetzt = new Date();

    Das Datum und die Zeit, die am Client-PC eingestellt sind, werden in der Variable jetzt zugewiesen.

    var Std = jetzt.getHours();
     alert(Std);

    zeigt die Stunde, die, zum Zeitpunkt des Auslesens, am Client-PC eingestellt war.

    //-->
    </script>
    Wir mir immer noch die Winterzeit angezeigt. Warum?

    Weil die Systemzeit auf Deinem PC nicht umgestellt wurde?

    viele Grüße ;-))

    Axel

    1. Hallo Axel,
      am Client PC läuft aber die richtige Uhrzeit. Das seltsame ist nur, bei Javascript nicht.

      Es kann also nur Clientseitig liegen, aber an was?

      1. Hallo,

        am Client PC läuft aber die richtige Uhrzeit.

        Wo wird die angezeigt?

        Das seltsame ist nur, bei Javascript nicht.
        Es kann also nur Clientseitig liegen,

        Ja.

        aber an was?

        Welches Betriebssystem? Welcher Browser?

        viele Grüße

        Axel

        1. Wo wird die angezeigt?

          Bei der Uhrzeit in der Systemsteuerung und im BIOS.

          Welches Betriebssystem? Welcher Browser?

          Windows NT SP5 und SP6a - IE 5.01 und IE 5.5

          Das Problem tritt auf allen PC's mit unterschiedlicher Konfiguration auf... Aber eben nicht bei allen.

          Ich bin am verzweifeln!

      2. Es kann also nur Clientseitig liegen, aber an was?

        Hallo Chris,

        Erklärung kam von mir 50 Minuten vor der Frage. Direkt als Antwort auf das ursprüngliche Posting von Dir. UTC kenn weder Sommer- noch Winterzeit. UTC wird nicht umgestellt. Also muss man bei einer Umrechnung von UTC in MEZ bzw. MESZ eben wissen ob grade MEZ oder MESZ aktiv ist.

        Ciao
        Thomas Grötzner

        1. Hallo,

          Es kann also nur Clientseitig liegen, aber an was?

          Erklärung kam von mir 50 Minuten vor der Frage. Direkt als Antwort auf das ursprüngliche Posting von Dir. UTC kenn weder Sommer- noch Winterzeit. UTC wird nicht umgestellt. Also muss man bei einer Umrechnung von UTC in MEZ bzw. MESZ eben wissen ob grade MEZ oder MESZ aktiv ist.

          Ja, aber

          var jetzt = new Date();

          ermittelt _nicht_ UTC, sondern die eingestellte Systemzeit. Wie diese mit UTC zusammenhängt, ist teilweise von benutzerspezifischen Einstellungen im Betriebssystem abhängig.

          viele Grüße

          Axel

          1. var jetzt = new Date();

            ermittelt _nicht_ UTC, sondern die eingestellte Systemzeit. Wie diese mit UTC zusammenhängt, ist teilweise von benutzerspezifischen Einstellungen im Betriebssystem abhängig.

            Danke. Die Systemzeit stimmt ja auch, nur bei var jetzt = new Date(); bekomme ich eine Stunde zu wenig angezeit. Weiß der Geier warum!

            Mit der UTC Zeit + 2 Stunden funktionierts, aber dann zählt die Anzeige bis 25:59 Uhr und macht dann bei 02:00 Uhr weiter. Und der Tag ändert sich auch erst um 2 Uhr. Wie kann ich dies verhindern? Dass es bei 23:59 mit 00:00 Uhr weitergeht und ein neuer Tag beginnt?

            1. Hallo,

              var jetzt = new Date();

              ermittelt _nicht_ UTC, sondern die eingestellte Systemzeit. Wie diese mit UTC zusammenhängt, ist teilweise von benutzerspezifischen Einstellungen im Betriebssystem abhängig.
              Danke. Die Systemzeit stimmt ja auch, nur bei var jetzt = new Date(); bekomme ich eine Stunde zu wenig angezeit. Weiß der Geier warum!

              Das ist unlogisch.

              Mit der UTC Zeit + 2 Stunden funktionierts, aber dann zählt die Anzeige bis 25:59 Uhr und macht dann bei 02:00 Uhr weiter. Und der Tag ändert sich auch erst um 2 Uhr.

              Sicher, dass er bis 25:59 zählt, nicht bis 24:59?

              Das wäre logisch bei richtiger Zeitzoneneinstellung GMT+1:
              Beispiel:
              Date() ermittelt 10:00 Uhr
              Deine Zeitzoneneinstellungen sagen, Du bist GMT+1 (Berlin).
              Also ist UTC = 9:00 Uhr
              UTC + 2 = 11:00 Uhr

              Date() ermittelt 23:59 Uhr (noch alter Tag)
              Deine Zeitzoneneinstellungen sagen, Du bist GMT+1 (Berlin).
              Also ist UTC = 22:59 Uhr
              UTC + 2 = 24:59 Uhr (noch alter Tag)

              Date() ermittelt 00:01 Uhr (neuer Tag)
              Deine Zeitzoneneinstellungen sagen, Du bist GMT+1 (Berlin).
              Also ist UTC = 23:01 Uhr
              UTC + 2 = 01:01 Uhr (neuer Tag)

              Deine Beschreibung deutet auf eine Zeitzone GMT+2 hin.

              Gehe einfach nochmal alle länderspezifischen Einstellungen in der Systemsteuerung durch: Ländereinstellungen - Gebietsschema, Datum und Uhrzeit - Zeitzone.

              Ansonsten sind die IEs, bei denen das auftritt, kaputt. Eventuell Temporäre Internetdateien leeren. Da haben die IEs so ihre Probleme mit.

              viele Grüße

              Axel

              1. Hallo Axel,

                Das wäre logisch bei richtiger Zeitzoneneinstellung GMT+1:
                Beispiel:
                Date() ermittelt 10:00 Uhr
                Deine Zeitzoneneinstellungen sagen, Du bist GMT+1 (Berlin).
                Also ist UTC = 9:00 Uhr

                Wenn es lt. GMT+1 10:00 Uhr ist dann ist es bei UTC 08:00 Uhr da wir grade MESZ haben, oder? Eine Umrechnung von GMT+-XYZ muss immer auch die Sommerzeit berücksichtigen wenn es in dieser Zeitzone sowas wie Sommer- und Winterzeit gibt. Für die Zeitzone "CapVerde Inseln" (GMT-1) zum Beispiel ist dies nicht notwendig da diese Zeitzone wie auch UTC keine Sommer- und Winterzeit hat.

                Für das was Chris hier beschreibt ist das aber eigentlich nicht wichtig da da UTC eigentlich gar nichts mit zu tun haben dürfte.

                Ciao
                Thomas Grötzner

                1. Hallo Axel,

                  Wenn es lt. GMT+1 10:00 Uhr ist dann ist es bei UTC 08:00 Uhr da wir grade MESZ haben, oder? Eine Umrechnung von GMT+-XYZ muss immer auch die Sommerzeit berücksichtigen wenn es in dieser Zeitzone sowas wie Sommer- und Winterzeit gibt. Für die Zeitzone "CapVerde Inseln" (GMT-1) zum Beispiel ist dies nicht notwendig da diese Zeitzone wie auch UTC keine Sommer- und Winterzeit hat.

                  Ja, das ist ja alles richtig, nur ermittelt JavaScript _in keinem Fall_ UTC, sondern _immer_ die lokale Systemzeit. Wenn diese 10:00 Uhr anzeigt und als Zeitzone GMT+1 eingestellt ist, dann ist für JavaScript auf Windosen GMT = 9:00 Uhr, egal, ob nun Sommerzeit ist oder nicht.

                  var jetzt = new Date();
                  var H = jetzt.getHours();
                  var m = jetzt.getMinutes();
                  alert (H + ":" + m);
                  var HUTC = jetzt.getUTCHours();
                  var mUTC = jetzt.getUTCMinutes();
                  alert (HUTC + ":" + mUTC);

                  Beim Probieren ist bei mir jetzt allerdings der Fehler auch aufgetreten. Wenn man _einmal_ den Haken bei Datum-Uhrzeit-Zeitzone-Uhr automatisch auf Sommer-/Winterzeit umstellen rausgenommen hat, dann hat man verloren. Setzt man ihn nämlich wieder rein, dann holt JavaScript mit Date() die Systemzeit - 1h. UTC ist immer noch Date()-1h. Lustiger Effekt *g*. Der Haken muss draußen bleiben, dann klappt das mit der Uhrzeit wieder.

                  viele Grüße

                  Axel

                  1. Hallo,

                    Beim Probieren ist bei mir jetzt allerdings der Fehler auch aufgetreten. Wenn man _einmal_ den Haken bei Datum-Uhrzeit-Zeitzone-Uhr automatisch auf Sommer-/Winterzeit umstellen rausgenommen hat, dann hat man verloren. Setzt man ihn nämlich wieder rein, dann holt JavaScript mit Date() die Systemzeit - 1h. UTC ist immer noch Date()-1h. Lustiger Effekt *g*. Der Haken muss draußen bleiben, dann klappt das mit der Uhrzeit wieder.

                    Kommando zurück! Am Haken rumspielen, Uhrzeit neu, richtig einstellen, Browser neu starten, dann gehts wieder. Wenn dann der Haken drin ist, rechnet JavaScript sogar richtig:
                    GMT = Date()-1(SZ)-1(Zeitzone)

                    viele Grüße

                    Axel

                    1. Kommando zurück! Am Haken rumspielen, Uhrzeit neu, richtig einstellen, Browser neu starten, dann gehts wieder. Wenn dann der Haken drin ist, rechnet JavaScript sogar richtig:
                      GMT = Date()-1(SZ)-1(Zeitzone)

                      Ich habe jetzt den Haken rausgenommen, die Uhrzeit umgestellt und siehe da, tatsächlich stimmts wieder. Wenn da nicht dieses ABER wäre :-) Bei uns im Firmennetzwerk wird ein Zeitabgleich gemacht und jetzt läuft der ganze PC ein Stunde hinterher.

                      Ich weiß, schön langsam wirds kompliziert, aber was soll ich machen? ;-)

                      1. Hallo,

                        Kommando zurück! Am Haken rumspielen, Uhrzeit neu, richtig einstellen, Browser neu starten, dann gehts wieder. Wenn dann der Haken drin ist, rechnet JavaScript sogar richtig:
                        GMT = Date()-1(SZ)-1(Zeitzone)

                        Ich habe jetzt den Haken rausgenommen, die Uhrzeit umgestellt und siehe da, tatsächlich stimmts wieder. Wenn da nicht dieses ABER wäre :-) Bei uns im Firmennetzwerk wird ein Zeitabgleich gemacht und jetzt läuft der ganze PC ein Stunde hinterher.

                        Also bei mir hat das, nach Browser-Neustart, dann auch mit Haken bei "Uhr automatisch auf Sommer-/Winterzeit umstellen" wieder funktioniert. Das System hatte sich nur kurz verschluckt. Probier mal den Haken wieder reinzumachen.

                        viele Grüße

                        Axel

              2. Sicher, dass er bis 25:59 zählt, nicht bis 24:59?

                Das wäre logisch bei richtiger Zeitzoneneinstellung GMT+1:

                Herzlichen Glückwunsch, Du bist der erste, der einen Tag mit mehr als 24 Stunden nutzt.. 24:59 Uhr ist genauso ein Quatsch wie 25:59 Uhr. Der einzige Sonderfall in dem ein Stundenwert größer 23 vorkommt, ist exakt 24 Uhr (entspricht 0 Uhr). Schon 24:01 Uhr gibt es definitiv nicht.

                Gruß,
                  soenk.e

                1. Sicher, dass er bis 25:59 zählt, nicht bis 24:59?

                  Das wäre logisch bei richtiger Zeitzoneneinstellung GMT+1:

                  Herzlichen Glückwunsch, Du bist der erste, der einen Tag mit mehr als 24 Stunden nutzt.. 24:59 Uhr ist genauso ein Quatsch wie 25:59 Uhr. Der einzige Sonderfall in dem ein Stundenwert größer 23 vorkommt, ist exakt 24 Uhr (entspricht 0 Uhr). Schon 24:01 Uhr gibt es definitiv nicht.

                  Hä?
                  Das ist aus dem Kontext gerissen! Es ging darum, dass mit Date() das Systemdatum ermittelt wurde, aus diesem wurde dann mit .getUTCHours() die _Zahl_ der Stunde ermittelt. Spätestens hier hat das _nichts_ mehr mit Uhrzeit zu tun. Diese wurde dann um Zwei erhöht. Das kann durchaus 24 und sogar 25 ergeben.

                  Lies den Thread noch mal!

                  viele Grüße

                  Axel

                2. Sicher, dass er bis 25:59 zählt, nicht bis 24:59?

                  Wenn ich die aktuelle Zeit vom Client auslese und dann + 2 dazu zähle, geht die Uhr bis 24:59 und spring dann auf 02:00 Uhr. Sorry, aber ich kann ja auch nichts dafür ;-)

              3. Gehe einfach nochmal alle länderspezifischen Einstellungen in der Systemsteuerung durch: Ländereinstellungen - Gebietsschema, Datum und Uhrzeit - Zeitzone.

                --> Habe ich gemacht, sogar als Systemstandard festgelegt. Leider ohne Erfolg.

                Ansonsten sind die IEs, bei denen das auftritt, kaputt. Eventuell Temporäre Internetdateien leeren. Da haben die IEs so ihre Probleme mit.

                --> Hat leider auch nicht den gewünschten Erfolg gebracht...

        2. Danke, aber wenn ich bei der UTC Zeit z.B. 2 Stunden dazu zählen lasse, was ja kein Problem ist, dann bekomme ich nach 24:00 Uhr Werte wie z.B. 25:17 Uhr (eben bis zwei Stunden dazu - nach 27:00 Uhr geht es dann weiter mit 02:00 Uhr). Ich möchte aber schon gerne, dass nach 24:00 Uhr es mit 00:01 weitergeht und ein neuer Tag beginnt. Wie stelle ich so etwas an?

          Danke.

  3. Hallo chris,

    "...
    In Deutschland haben wir UTC plus 1 Stunde - wenn es also 13:00 Uhr UTC ist, dann ist es in Deutschland 14:00 Uhr. Waehrend der Sommerzeit muessen wir zwei Stunden zur UTC-Angabe dazuzaehlen.
    ..."

    Gefunden bei von http://www.brazil.de/home/a-zeit.htm#zeit

    Weiss leider nicht wie man einen Link als Link postet. Musst den Link halt rauskopieren und in Deine Adressleiste eingeben:

    Auf der Seite gehts um die Zeitverschiebung zu Brasilien aber auf der Seite ganz unten wird UTC definiert.

    Kenne mich mit JScript überhaupt nicht aus. Gibt aber bestimmt eine Möglichkeit zu Fragen ob grade Sommer oder Winterzeit ist?

    Ciao
    Thomas Grötzner