Klaus Grube: Java 1.2 hat Jahr 2000 Problem

Hallo,
schaut euch mal das Script an und probiert es mal aus.
mit dem Befehl getYear bekomme ich auf jeden Fall folgende Ausgabe:

Jetzt ist es: 13:53 Uhr.
Datum: 2.1.100

Oder habe ich da etwas Falsch gemacht!? Ich glaube nicht.
mfg Klaus Grube

<html>
<script language="JavaScript">
<!-- vor alten Browsern verstecken

heute = new Date();
  document.write("Jetzt ist es: ", heute.getHours(), ":",
                  heute.getMinutes(), " Uhr.<br>");
  document.write("Datum: ", heute.getDate(), ".",
                  heute.getMonth()+1, ".", heute.getYear());

// -->
</script>
</html>

  1. Hallo Klaus!

    Jetzt ist es: 13:53 Uhr.
    Datum: 2.1.100

    Komisch, ich erhalte die falsche Zeit, aber das richtige Datum *wunder*:

    Jetzt ist es: 13:3 Uhr.
    Datum: 2.1.2000

    Aber ein Y2K-Problem von "Java" koennen wir wohl ausschliessen *g*

    -joerg

    1. Hallo Klaus!

      Jetzt ist es: 13:53 Uhr.
      Datum: 2.1.100

      Komisch, ich erhalte die falsche Zeit, aber das richtige Datum *wunder*:

      Kann ich mir nicht erklären

      Jetzt ist es: 13:3 Uhr.
      Datum: 2.1.2000

      Aber ein Y2K-Problem von "Java" koennen wir wohl ausschliessen *g*

      Glaub ich nicht, hast du nicht ein anderes Java Programm

      -joerg

      »»  
      Habe mal das Script umgeschrieben:
      im getYear habe ich die Adition von 1900 eingefügt und es arbeitet unter Java 1.2 einwandfrei auch die Uhrzeit wird richtig wiedergegeben.

      Jetzt ist es: 14:16 Uhr.
      Datum: 2.1.2000

      Ich wollte mit diesem Script lediglich darauf aufmerksam machen ob es  im Jahre "anno domini" 2000 richtig läuft

      Klaus Grube

      <html>
      <script language="JavaScript">
      <!-- vor alten Browsern verstecken

      heute = new Date();
        document.write("Jetzt ist es: ", heute.getHours(), ":",
                        heute.getMinutes(), " Uhr.<br>");
        document.write("Datum: ", heute.getDate(), ".",
                        heute.getMonth()+1, ".", heute.getYear()+ 1900);

      // -->
      </script>
      </html>

      1. Hallo nochmal!

        Jetzt ist es: 14:3 Uhr.
        Datum: 2.1.2000

        »»> Kann ich mir nicht erklären

        Ich schon, es war halt grade 14:03! Hab mich nur verschrieben, es ging ja auch nur um die einstellige Minutenanzeige, die aber eigentlich auch kein Wunder ist...

        »»  Glaub ich nicht, hast du nicht ein anderes Java Programm

        Aehhm, ich wollte damit nur daraufhinweisen, dass es sich um JavaSript und nicht um Java handelt, aber das ist ja jetzt auch egal, diese Klugscheisserei tut mir auch schon wieder leid, denn jetzt stehe ich selber vor einem Y2K-Problem, dass ich allein nicht loesen kann. siehe http://www.teamone.de/selfaktuell/self_forum/48974.html

        Bis dann
        -joerg

        1. Hallo nochmal!
          Ich schon, es war halt grade 14:03! Hab mich nur verschrieben, es ging ja auch nur um die »»einstellige Minutenanzeige, die aber eigentlich auch kein Wunder ist...

          Siehst du...

          Aehhm, ich wollte damit nur daraufhinweisen, dass es sich um JavaSript und nicht um Java

          Zum ausführen von Javascripts benötigt man immer ein "Java" den sogenannten  Interpreter.
          Ohne diesen könntest du nie deine Scripte zum laufen kriegen.
          Nun gibt es aber verschiedene Javainterpreter daher auch meine Angabe unter welcher Vision  der Fehler auftritt..

          »»handelt, aber das ist ja jetzt auch egal, diese Klugscheisserei tut mir auch schon wieder leid, »»denn jetzt stehe ich selber vor einem Y2K-Problem, dass ich allein nicht loesen kann. siehe

          Jörg ich glaube nicht das du Geklugtscheist hast, du warst eben nur ein wenig voreillig.
          Ich habe mir dein Script angeschaut unter Netscape 4.6 und den dazugehörigen Javainterpreter funktioniert es einwandfrei. Sieh dir den Auszug aus deinen Script an dort ist wie im meinen Beispiel die Zahl 1900 dazu addiert worden.

          function checkDateTime () {
          var today = new Date();
          var year = today.getYear() + 1900;
          var month = today.getMonth()+1;
          var date = today.getDate();
          var day = today.getDay();
          var hour = today.getHours();
          var minute = today.getMinutes();
          var second = today.getSeconds();

          1. function checkDateTime () {
            var today = new Date();
            var year = today.getYear() + 1900;
            var month = today.getMonth()+1;
            var date = today.getDate();
            var day = today.getDay();
            var hour = today.getHours();
            var minute = today.getMinutes();
            var second = today.getSeconds();

            Der IE zeigt ab 2000 die ursprünglich
            nur zweistellige Jahreszahl vierstellig an, NS
            hingegen nicht.
            getYear ist in der neuen Impementation überholt und am besten durch getFullYear zu ersetzen, um das Problem zu vermeiden und bei allen Browsern die gleiche Anzeige zu erzielen.
            getYear+1900 ergibt sonst beim IE das Jahr 3900!

            Grüsse
            Marcus

          2. Aehhm, ich wollte damit nur daraufhinweisen, dass es sich um JavaSript und nicht um Java
            Zum ausführen von Javascripts benötigt man immer ein "Java" den sogenannten  Interpreter.
            Ohne diesen könntest du nie deine Scripte zum laufen kriegen.
            Nun gibt es aber verschiedene Javainterpreter daher auch meine Angabe unter welcher Vision  der Fehler auftritt..

            Gnade! Java ist eine richtige Programmiersprache, und JavaScript ist eine, hm, äh - jedenfalls bestimmt nicht dasselbe!

            1. Hallo Michael,

              Gnade! Java ist eine richtige Programmiersprache, und JavaScript ist eine, hm, äh - jedenfalls bestimmt nicht dasselbe!

              Als absoluter Javascriptfan kann ich nur sagen, es kommt darauf an, was man mit der Sprache erreichen
              möchte. Und richtig angewendet kann man in JS sehr sehr
              viel erreichen.

              Viele Grüße

              Antje

              1. Als absoluter Javascriptfan kann ich nur sagen,
                es kommt darauf an, was man mit der Sprache
                erreichen möchte. Und richtig angewendet kann
                man in JS sehr sehr viel erreichen.

                Klar. Ich nutze es ja auch, wenn es sich anbietet (http://www.homepages.de/schroepl@dialup.nacamar.de/pbm/amtsblat/triumph/formular.htm.)

                Aber wenn ich (Netscape 3.0) schon von PA[FV]s Fan-Seiten mit JavaScript-Fehlern förmlich totgeschmissen werde ... das verdirbt einem halt irgendwann doch den Spaß.

                Außerdem 'gibt' es ja gar kein JavaScript, sondern bloß lauter verschiedene inkompatible Dialekte (einen pro Browser-Version).
                Da lobe ich mir doch mein portables, serverseitiges Perl ... ;-)))

                (<javascript:self.close()> ;-)

    2. Grade lach ich noch drueber, da stelle ich fest, dass bei mir auch ein Fehler auftritt:

      Meine Welt-Uhr (Freeware-Sript) hat sich ins Jahr 3900 vorkatapultiert. (wow!)
      http://www.uni-jena.de/~j6scjr/world.htm

      Ich vermute, das die dem Programm zugrunde liegende mathematische Formel fuer 2000 nicht mehr passt, aber das ist nur ein Tip ins Blaue...

      Koennte sich das vielleicht mal jemand bitte anschauen, ich kann doch kein JavaScript (noch nicht ;-)

      Danke
      -joerg

      P.S.: Der Source-Code steht ein bisschen weiter unten, das ist KEIN Versuch, ihn zu verbergen, sondern nur ein kleiner Spass :-)

      1. Hallo Jörg,

        Meine Welt-Uhr (Freeware-Sript) hat sich ins Jahr 3900 vorkatapultiert. (wow!)
        http://www.uni-jena.de/~j6scjr/world.htm

        Ich vermute, das die dem Programm zugrunde liegende mathematische Formel fuer 2000 nicht mehr passt, aber das ist nur ein Tip ins Blaue...

        dein Problem existiert nur im Internet Explorer

        ändere die Zeile var year = today.getYear() + 1900;
        in der Funktion checkDateTime ()

        so ab:

        if (document.all) year = today.getYear(); else
        year = today.getYear() + 1900;

        Da funktioniert es zumindest im Internet Explorer ab der Version 4. Willst du auch den IE 3 erfassen, müßte du die Browserabfrage noch verändern.

        Viele Grüße

        Antje

        1. Hallo Antje!

          Vielen Dank, jetzt befinde ich mich wieder in der Gegenwart! 3900 war mir viel zu stressig ;-)

          <vollmundig>
          Und ich verspreche hiermit, im neuen Jahr endlich JavaScript zu lernen und nichts mehr upzuloaden, was ich nicht vorher mit beiden Browsern getestet habe. Und keine Features mehr einzubauen von denen ich keine Ahnung habe ... obwohl ... nee, das kann ich nicht versprechen... </vollmundig>

          viele Gruesse
          -joerg