Ron: Weltzeit

Hi,
ich habe für meine Freundin in den USA eine Homepage gemacht und unter anderem dort zwei Uhren eingefügt, die eigentlich die Uhrzeit bei ihr und bei mir anzeigen sollte.
Ich habe dafür ein Freeware script genommen und es entsprechend umgeschrieben, da es anfangs bei ihr nicht die richtige zeit angezeigt hat.

Nur zieht es nun nach einer Stunde von der Uhrzeit eine Stunde ab !

Ich verstehe nicht viel von Java, wäre schön wenn mir einer von euch hilft !

Also ihre Zeit ist 7 Stunden hinter meiner !
Und ich wohne in Deutschland.

Nur wenn ich es von der Systemzeit aus berechnen lasse, ist wenn sie die Seite sich anschaut ihre Uhrzeit 7 Stunden hinter der wirklichen und die Uhrzeit die sie angezeigt bekommt entspricht der akutellen Zeit in Deutschland.

uuuh verwirrend !

Hier also das Script (da ich keine Ahnung davon habe wusste ich auch nicht was ich tatsächlich entfernen kann und was nicht) :

<body bgcolor="black" text="blue" link="blue" vlink="purple" alink="red" onload="TimeFunc(mStart)">

<script language="JavaScript">
<!--
var mStart = 59;
function TimeFunc(nValue) {
var mGMT = new Date(+ 2);
var mMinuseins = new Date();
var mMinuszwei = new Date();
var mMinusdrei = new Date();
var mMinusdreia = new Date();
var mMinusvier = new Date();
var mMinusfuenf = new Date();
var mMinussechs = new Date();
var mMinussieben = new Date();
var mMinusacht = new Date();
var mMinusneun = new Date();
var mMinuszehn = new Date();
var mLondon = new Date();
var mPluseins = new Date();
var mPluszwei = new Date();
var mPlusdrei = new Date();
var mPlusdreia = new Date();
var mPlusvier = new Date();
var mPlusviera = new Date();
var mPlusfuenf = new Date();
var mPlusfuenfa = new Date();
var mPlusfuenfb = new Date();
var mPlussechs = new Date();
var mPlussechsa = new Date();
var mPlussieben = new Date();
var mPlusacht = new Date();
var mPlusneun = new Date();
var mPlusneuna = new Date();
var mPluszehn = new Date();
var mPluself = new Date();
var mPluselfb = new Date();
var mPluszwoelf = new Date();
var mPlusdreizehn = new Date();
var mPlusvierzehn = new Date();

mGMT.setHours(mGMT.getHours() + 2);
mLondon.setHours(mGMT.getHours() + 1);
mMinuseins.setHours(mGMT.getHours() - 0);
mMinuszwei.setHours(mGMT.getHours() - 2);
mMinusdrei.setHours(mGMT.getHours() - 3);
mMinusdreia.setHours(mGMT.getHours() - 3);
mMinusdreia.setMinutes(mGMT.getMinutes() - 30);
mMinusvier.setHours(mGMT.getHours() - 4);
mMinusfuenf.setHours(mGMT.getHours() - 12);
mMinussechs.setHours(mGMT.getHours() - 6);
mMinussieben.setHours(mGMT.getHours() - 7);
mMinusacht.setHours(mGMT.getHours() - 8);
mMinusneun.setHours(mGMT.getHours() - 9);
mMinuszehn.setHours(mGMT.getHours() - 10);
mPluseins.setHours(mGMT.getHours() - 5);
mPluszwei.setHours(mGMT.getHours() + 3);
mPlusdrei.setHours(mGMT.getHours() + 4);
mPlusdreia.setHours(mGMT.getHours() + 4);
mPlusdreia.setMinutes(mGMT.getMinutes() + 30);
mPlusvier.setHours(mGMT.getHours() + 4);
mPlusviera.setHours(mGMT.getHours() + 4);
mPlusviera.setMinutes(mGMT.getMinutes() + 30);
mPlusfuenf.setHours(mGMT.getHours() + 5);
mPlusfuenfa.setHours(mGMT.getHours() + 5);
mPlusfuenfa.setMinutes(mGMT.getMinutes() + 30);
mPlusfuenfb.setHours(mGMT.getHours() + 5);
mPlusfuenfb.setMinutes(mGMT.getMinutes() + 45);
mPlussechs.setHours(mGMT.getHours() + 6);
mPlussechsa.setHours(mGMT.getHours() + 6);
mPlussechsa.setMinutes(mGMT.getMinutes() + 30);
mPlussieben.setHours(mGMT.getHours() + 7);
mPlusacht.setHours(mGMT.getHours() + 8);
mPlusneun.setHours(mGMT.getHours() + 9);
mPlusneuna.setHours(mGMT.getHours() + 9);
mPlusneuna.setMinutes(mGMT.getMinutes() + 30);
mPluszehn.setHours(mGMT.getHours() + 10);
mPluself.setHours(mGMT.getHours() + 11);
mPluselfb.setHours(mGMT.getHours() + 11);
mPluselfb.setMinutes(mGMT.getMinutes() + 45);
mPluszwoelf.setHours(mGMT.getHours() + 12);
mPlusdreizehn.setHours(mGMT.getHours() + 13);
mPlusvierzehn.setHours(mGMT.getHours() + 14);

mStunde = mGMT.getHours();
mMinute = mGMT.getMinutes();

if (mStunde < 10)
mStunde = "0"+mStunde;

if (mMinute <10)
mMinute = "0"+mMinute;

document.Weltzeit.Minusfuenf.value = " " + mMinusfuenf.toGMTString() + ' - 5';
document.Weltzeit.Pluseins.value= " " + mPluseins.toGMTString() + ' + 4';
window.setTimeout("TimeFunc(" + nValue + ")", 120);
 }
// -->
 </script>
<p align="center"><b>Frankfurt (Germany)</b>
<div align="center"><table border="0">
    <tr>
        <td width="171"><form name="Weltzeit" method="get">
            <p align="center"><font face="Arial"><input type="text" name="Pluseins"
             size="21"></font></p>
            <p align="center"><font color="blue"><b>Glenpool (USA)</b></font></td>
    </tr>
</table></div>
<div align="center"><table border="0">
    <tr>
        <td></td>
    </tr>
    <tr>
        <td width="21"><p><font face="Arial"><input type="text" name="Minusfuenf"
             size="21"></font></td>
    </tr>
</table></div>
</form>

THX !

  1. Hi Ron,

    fragst einfach auf dem Clientrechner die Zeit und den Offset zum GMT ab. Wie?

    http://www.teamone.de/selfhtml/tece.htm#a9

    der rest ist Addition bzw Subtraktion.

    Bye Ed X

    1. Naja, wenn ich auf dem CLIENT die Zeitabfrage und dann subtrahiere und addiere ist das prob wieder die zeitverschieben.

      ZB.:

      Ich rufe die Seite auf, dann sagt der Client

      Deutschland
      12 pm

      also wäre es bei ihr wenn ich einfach 7 subtrahiere

      Glenpool
      5 am

      nun ruft sie zur gleich zeit die Seite auf und der Client sagt

      Deutschland
      5 am

      Glenpool
      11 pm

      1. Hallo Ron!

        Deutschland
        12 pm

        also wäre es bei ihr wenn ich einfach 7 subtrahiere

        Glenpool
        5 am

        nun ruft sie zur gleich zeit die Seite auf und der Client sagt

        Deutschland
        5 am

        Glenpool
        11 pm

        HmmH... hast Du überlegt, dass Du an Deinem Rechner mit Deiner deutschen Systemzeit und Sie an ihrem mit ihrer middelamerican Time???

        Wenn Du auf der Webseite jsmässig von der Zeit addierst oder substrahierst wird es auch bei ihr addiert oder substrahiert. Daher wird es so nie funktionieren!

        Du brauchst zwei Anzeigen. Eine die für Sie gemacht ist, eine die für Dich gemacht ist. Zum Beispiel oben und unten die zwei Uhren: sie soll die obere anschauen, Du die untere.

        Patrick

        1. @Patrick:

          Das ist ja das was ich gesagt habe.
          Durch das Script das ich gepostet hatte, funktionierte es perfekt so das wir nur eine Uhr brauchten.
          Doch aus mir nicht bekannten Gründen hat es jede Stunde plötzlich eine Stunde abgezogen !

          Achja, was fällt dir ein einfach meinen zweiten Vornamen zu stehlen ? :-)

          Ron

          1. Hi Ron,

            ich hoffe das hier ist dein Lösungsansatz.
            also ich überarbeite nicht dein gesamtes script, aber: wenn du in deutschland bist ist dein GMT-offset negativ in Amiland positiv. So stellst du fest wo du bist.
            Schau dir das untere script an, und es ist eigentlich ganz einfach.

            Wenn Du unbedingt noch deine Tagesabfrage reinhaben willst, erweitere es einfach :-)

            <html><head>
            <title>Test</title>
            <script language="JavaScript">
            function zeitabfrage()
             {
             now = new Date();
             hours = now.getHours();
             minutes = now.getMinutes();
             seconds = now.getSeconds();
             localOffset = now.getTimezoneOffset() / 60;

            if (localOffset > 0) // das muss America sein
             {
             GlenpoolTime = hours + ":" + minutes + ":" + seconds;
             GermanTime = (hours+7) + ":" + minutes + ":" + seconds;
             }
            else (localOffset < 0) // das muss Germany sein
             {
             GermanTime = hours + ":" + minutes + ":" + seconds;
             GlenpoolTime = (hours-7) + ":" + minutes + ":" + seconds;
             }
            document.uhr.glenpool.value = GlenpoolTime;
            document.uhr.germany.value = GermanTime;
            window.setTimeout("zeitabfrage()",1000);
            }

            </script>
            </head>

            <body onload="zeitabfrage()">

            <form name="uhr">
            Glenpool:   <input type="text" name="glenpool" size="8" readonly>
            <br><br>
            Germany:   <input type="text" name="germany" size="8" readonly>
            </form>
            </body></html>

            Bye Ed X

            1. Danke Ed X !

              Danke für die Mühe die du dir gegeben hast :)

              Ich werde dich Lobend bei ihr erwähnen :-)

              Ron

              1. Hi Ron,

                ich habe es mir nochmal angesehen, und siehe da, wenn Du die Tage usw auch haben willst, es ist ganz einfach :-)

                <---------schnipp------------>
                <html><head>
                <title>Wann ist wo, oder so</title>
                <script language="JavaScript">
                function zeitabfrage()
                 {
                 now = new Date();
                 ZeitUnleserlich = now.getTime();
                 JetlagGrund = 7*60*60*1000;  // millisekunden
                 AbstandVonDerInsel = now.getTimezoneOffset() / 60;

                if (AbstandVonDerInsel > 0) // das muss America sein
                 {
                 SchlechtesEssenAtHome = now.toGMTString();
                 now.setTime(ZeitUnleserlich + JetlagGrund);
                 SchlechtesBenehmenAtUeberall = now.toGMTString();
                 }
                else (AbstandVonDerInsel < 0) // das muss Germany sein
                 {
                 SchlechtesBenehmenAtUeberall = now.toGMTString();
                 now.setTime(ZeitUnleserlich - JetlagGrund);
                 SchlechtesEssenAtHome = now.toGMTString();
                 }

                document.uhr.glenpool.value = SchlechtesEssenAtHome.substr(0,25);
                document.uhr.germany.value = SchlechtesBenehmenAtUeberall.substr(0,25);
                window.setTimeout("zeitabfrage()",1000);
                }

                </script>
                </head>

                <body onload="zeitabfrage()">

                <form name="uhr">
                Glenpool:   <input type="text" name="glenpool" size="30" readonly>
                <br><br>
                Germany:   <input type="text" name="germany" size="30" readonly>
                </form>
                </body></html>
                <---------schnipp------------>

                viel Spaß

                Bye Ed X

                1. Hi,

                  irgend was stimmt da nochnicht so ganz, in Deutschland ist doch nicht GMT.

                  Warum nicht so?

                  ----------------
                  <html>
                  <head>
                  <title>Datum</title>

                  <script language="JavaScript" type="text/javascript">

                  function ZeitOffset(Stunde_dif,Minute_dif)
                  {
                   var Jetzt = new Date();
                   Jetzt.setHours(Jetzt.getHours() + parseInt(Jetzt.getTimezoneOffset() / 60) + parseInt(Stunde_dif));
                   Jetzt.setMinutes(Jetzt.getMinutes() + (Jetzt.getTimezoneOffset() % 60) + parseInt(Minute_dif));

                  return (Jetzt);
                  }

                  function ZeitAnzeigen()
                  {
                   Zeit = ZeitOffset(2,0);
                   document.uhr.germany.value = Zeit.toLocaleString();

                  Zeit = ZeitOffset(-7,0);
                   document.uhr.glenpool.value = Zeit.toLocaleString();

                  window.setTimeout("ZeitAnzeigen()",1000);
                  }
                  //-->
                  </script>

                  </head>
                  <body>
                  <body onload="ZeitAnzeigen();">

                  <form name="uhr">
                  Glenpool:  <input type="text" name="glenpool" size="30" readonly>
                  <br><br>
                  Germany:  <input type="text" name="germany" size="30" readonly>
                  </form>
                  </body>
                  </html>
                  ------------

                  Hoffe es klappt ;-)

                  Ach ja, ZeitOffset(2,0); bedeutet z.B. dass die gewünschte Zeit GMT + 2 Stunden ist.
                  Möchte ich den Zeitunterschied von -5 1/2 Stunden haben, so schreibe ich ZeitOffset(-5,-30);

                  Alles klar?

                  Ciao

                  1. Hi Christian,

                    richtig, richtig und Asche auf mein Haupt. Ich hatte mir überlegt, was man mit dem Script noch so alles anstellen könnte. Irgendwann bin ich dann hängengeblieben, weil mann doch den GMT-offset abfragen kann und damit kann man schon eine kleine Weltzeituhr bauen. Dann ist mir die Idee gekommen, dass einige Länder nicht bei der Sommerzeit mitmachen und das kann man nicht abfragen. Ist aber eigentlich irrelevant, da das wirklich die Ausnahmen sind. Und welche Seite wird schon wirklich aus jedem Winkel dieser Erde aufgerufen.

                    Egal, der Ansatz für eine solche Uhr sollte trotzdem GMT und nicht localTime sein, es ist einfach flexibler, wobei ich natürlich neidlos annerkenne, das dein script fehlefrei ist und meins nicht.

                    grmpf!!! :-)

                    Bye Ed X

          2. Hallo Ron!

            Achja, was fällt dir ein einfach meinen zweiten Vornamen zu stehlen ? :-)

            Nun ja, die Frage darf ich, da ich vermutlich recht in der Annahme gehe, dass ich um einiges älter sein dürfte als Du, an Deine Eltern stellen: Was fiel Euch ein, Eurem Sohn meinen ersten Vornamen als zweiten Vornamen zu geben?

            ;-)

            Patrick (ja, *der* aus Frankfurt) Jean-Max A. (http://www.atomic-eggs.com/selfspezial/daten/1.html)

            1. Nun ja, die Frage darf ich, da ich vermutlich recht in der Annahme gehe, dass ich um einiges älter sein dürfte als Du, an Deine Eltern stellen: Was fiel Euch ein, Eurem Sohn meinen ersten Vornamen als zweiten Vornamen zu geben?

              Ich werde sie ma fragen

              lol

          3. Achja, was fällt dir ein einfach meinen zweiten Vornamen zu stehlen ? :-)

            Und was fällt Dir ein, einfach meinen ersten und letzten Vornamen zu klauen? Ich hab doch nur einen... *schnüff*

            Ron

  2. Hi,
    warum nicht einfacher???
    Oder überseh ich da was?

    <html>
    <head>
    <title>Datum</title>

    <script language="JavaScript" type="text/javascript">

    function ZeitAnzeigen(Stunde_dif,Minute_dif)
    {
     var Jetzt = new Date();
     Jetzt.setHours(Jetzt.getHours() + parseInt(Jetzt.getTimezoneOffset() / 60) + parseInt(Stunde_dif));
     Jetzt.setMinutes(Jetzt.getMinutes() + (Jetzt.getTimezoneOffset() % 60) + parseInt(Minute_dif));

    return (Jetzt);
    }

    //-->
    </script>

    </head>
    <body>
    <script language="JavaScript" type="text/javascript">
    document.write(ZeitAnzeigen(-7,0));
    </script>
    </body>
    </html>

    Letzlich wird einfach die Funktion ZeitAnzeige mit den beiden Parametern für den Unterschied in Stunden und Minuten von der GM Time angegeben.

    So ist auch ein Datumsprung kein Problem.

    Ciao
    Christian