Eric Teubert: Systemuhr unabhängige Zeit

Hi,

Ich möchte auf meiner Seite die Uhrzeit anzeigen lassen, die immer aktuell und bei jedem User gleich ist.

Zur Zeit sieht das so aus:

<script type="text/javascript">
<!--
var startdate = new Date();

function Serverzeit(){
var absSekunden = Math.round(ZeitBerechnen2()+7200);
var relSekunden = absSekunden % 60;
var absMinuten = Math.abs(Math.round((absSekunden-30)/60));
var relMinuten = absMinuten % 60;
var absStunden = Math.abs(Math.round((absMinuten-30)/60));

var anzSekunden ="" + ((relSekunden > 9) ? relSekunden : "0" + relSekunden);
var anzMinuten ="" + ((relMinuten > 9) ? relMinuten : "0" + relMinuten);
var anzStunden ="" +  (absStunden % 24);

if(absSekunden > 0) {
document.getElementById("stime").firstChild.data = anzStunden + ":" + anzMinuten + ":" + anzSekunden;
}
window.setTimeout('Serverzeit()',100);
}

function ZeitBerechnen2()
{
var actdate = new Date();
return(actdate.getTime()/1000);
}
//-->
</script>

Da ist aber das Problem, dass mit dem Verstellen der Systemuhr sich auch die angezeigte Zeit ändert - das ist blöd. Ich habe schon versucht, new Date() mit Timestampwerten zu füllen, aber nur wirre Ergebnisse erhalten.

Danke im Voraus

Eric

  1. hi,

    Ich habe schon versucht, new Date() mit Timestampwerten zu füllen, aber nur wirre Ergebnisse erhalten.

    wo ist das problem?

    wie das format dafür auszusehen hat, steht doch unter http://de.selfhtml.org/javascript/objekte/date.htm#allgemeines beschrieben.

    gruß,
    wahsaga

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

      wie das format dafür auszusehen hat, steht doch unter http://de.selfhtml.org/javascript/objekte/date.htm#allgemeines beschrieben.

      Objektname = new Date(Jahr,Monat,Tag,Stunden,Minuten,Sekunden);

      Damit habe ich es auch schon probiert, nur habe ich wie gesagt nur wirre Ergebnisse erhalten.
      Ich kann ja mal ein Beispiel geben, wie ich es verstehen würde, wenn ich statisch 5:30:30 ausgeben will

      Objektname = new Date("","","","5","30","30");

      Dann ist die Bildschirmausgabe

      19:30:0-30

      ???

      1. hi,

        Objektname = new Date("","","","5","30","30");

        Dann ist die Bildschirmausgabe

        19:30:0-30

        ich würde nicht erwarten, dass Date() eine korrekte rückgabe erzeugt, wenn du die angaben zum datum weglässt.

        aber warum lässt du sie weg - und setzt dort nicht einfach das aktuelle tagesdatum ein?

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. ich würde nicht erwarten, dass Date() eine korrekte rückgabe erzeugt, wenn du die angaben zum datum weglässt.

          aber warum lässt du sie weg - und setzt dort nicht einfach das aktuelle tagesdatum ein?

          Ok, so geht es, bis auf einen exakt 2stündigen Unterschied ... nur muss ich jetzt per timestamp auch Monate, Jahre und Tage ausrechnen muss - das stelle ich mir ziemlich kompliziert vor.

          Gibt es denn keine Möglichkeit, diese Werte "automatisch" zu füllen oder so?

          Eric

          1. hi,

            Ok, so geht es, bis auf einen exakt 2stündigen Unterschied ...

            immer exakt zwei stunden, oder nur in der zeitzone, wo du es getestet hast ...?

            nur muss ich jetzt per timestamp auch Monate, Jahre und Tage ausrechnen muss - das stelle ich mir ziemlich kompliziert vor.

            Gibt es denn keine Möglichkeit, diese Werte "automatisch" zu füllen oder so?

            wie "berechnest" du denn derzeit den timestamp? der muss doch serverseitig irgendwo her kommen.

            wenn du z.b. mit PHP arbeitest, kannst du doch ganz einfach date() (die PHP-funktion) benutzen, um die ausgabe schon im "richtigen" format zu erzeugen ...

            gruß,
            wahsaga

            --
            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
            1. immer exakt zwei stunden, oder nur in der zeitzone, wo du es getestet hast ...?

              nur bei mir - von welcher zeitzone geht die sprache denn aus?

              wie "berechnest" du denn derzeit den timestamp? der muss doch serverseitig irgendwo her kommen.

              wenn du z.b. mit PHP arbeitest, kannst du doch ganz einfach date() (die PHP-funktion) benutzen, um die ausgabe schon im "richtigen" format zu erzeugen ...

              mit
              <?
              $time=time();
              ?>

              und dann innerhalb von java auch per php und echo

              und wenn ich statt new date() date() einsetze, geht garnix mehr

              1. hi,

                immer exakt zwei stunden, oder nur in der zeitzone, wo du es getestet hast ...?

                nur bei mir - von welcher zeitzone geht die sprache denn aus?

                na von der des clients wohl.

                mit
                <?
                $time=time();
                ?>

                und dann innerhalb von java auch per php und echo

                und wenn ich statt new date() date() einsetze, geht garnix mehr

                ich sehe kein problem,

                Objektname = new Date(Jahr,Monat,Tag,Stunden,Minuten,Sekunden);

                mit PHP dynamisch ausgeben zu lassen, und dabei die "richtigen" werte einsetzen zu lassen.

                gruß,
                wahsaga

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

                  Objektname = new Date(Jahr,Monat,Tag,Stunden,Minuten,Sekunden);
                  mit PHP dynamisch ausgeben zu lassen, und dabei die "richtigen" werte einsetzen zu lassen.

                  Erklär das mal bitte kurz.
                  Ich würde aus dem Timestampwert einzeln Variabeln für Stunde, Minute, Tag, ... ausrechnen. Aber dazu bräuchte ich doch garkein date() ?

                  Gruß

                  Eric

                  1. hi,

                    Ich würde aus dem Timestampwert einzeln Variabeln für Stunde, Minute, Tag, ... ausrechnen. Aber dazu bräuchte ich doch garkein date() ?

                    warum willst du, wenn du einen unix-timestamp vorliegen hast, die einzelnen datumsbestandteile "ausrechnen"?
                    mit date() hast du es doch viel bequemer, das datum in nahezu jedem beliebigen format (*) auszugeben, also wozu groß rumrechnen?

                    gruß,
                    wahsaga

                    (*) auch "Monat Tag, Jahr Stunden:Minuten:Sekunden" wäre ein denkbares, mit date() leicht erstellbares format - was sich dann sehr einfach in
                    Objektname = new Date("Monat Tag, Jahr Stunden:Minuten:Sekunden");
                    einsetzen lässt.

                    --
                    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                    1. warum willst du, wenn du einen unix-timestamp vorliegen hast, die einzelnen datumsbestandteile "ausrechnen"?
                      mit date() hast du es doch viel bequemer, das datum in nahezu jedem beliebigen format (*) auszugeben, also wozu groß rumrechnen?

                      Mein Problem ist, dass ich bis jetzt keinerlei Werte aus date() herausbekommen habe. Kannst du mir vielleicht an meinem Code direkt zeigen, wie das aussehen soll? ( zumindestens im Ansatz )

                      Eric

                      1. hi,

                        Mein Problem ist, dass ich bis jetzt keinerlei Werte aus date() herausbekommen habe.

                        wir reden jetzt von der PHP-funktion date(), ja?

                        Kannst du mir vielleicht an meinem Code direkt zeigen, wie das aussehen soll? ( zumindestens im Ansatz )

                        zumindest die beispiel zur funktion date() im manual unter http://www.php.net/manual/de/function.date.php#AEN18953 sollten doch auf deinem system nachvollziehbar sein?

                        gruß,
                        wahsaga

                        --
                        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                        1. Mein Problem ist, dass ich bis jetzt keinerlei Werte aus date() herausbekommen habe.

                          wir reden jetzt von der PHP-funktion date(), ja?

                          Kannst du mir vielleicht an meinem Code direkt zeigen, wie das aussehen soll? ( zumindestens im Ansatz )

                          zumindest die beispiel zur funktion date() im manual unter http://www.php.net/manual/de/function.date.php#AEN18953 sollten doch auf deinem system nachvollziehbar sein?

                          Ehm ... sorry, ich hab da etwas quer gedacht ... danke, so ist es natürlich viel einfacher ...

                          Danke, geklärt

                          Eric

          2. Hi,

            Ok, so geht es, bis auf einen exakt 2stündigen Unterschied ...

            warte noch ein wenig, dann ist es nur noch eine Stunde ;-)
            Dich könnte getUTCHours() interessieren...

            freundliche Grüße
            Ingo

  2. Hallo Eric,

    Javascript läuft auf dem Rechner Deiner Besucher und kennt auch nur deren Uhr. Wenn Du auf Deiner Seite eine für alle Besucher synchronisierte Zeit anzeigen willst, musst Du Sie überzeugen, in ihre PCs eine Funkuhr einzubauen, oder besser, Du teilst der Seite per Serverscript Deine Zeit mit und benutzt diese Information im Javascript, um die angezeigte Zeit zu korrigieren.

    Gruß, Jürgen