Sven Gabentuler: PERL + localtime 1 h zu spät ?

Hallo Forumgemeide

Ich hab folgendes Problem, in meinem CGI-Script benutzte ich folgendes Script:

$date = (scalar localtime);

$date hat dann einen Wert der in etwa so aussieht:
Thu Mar 11 21:47:45 1999

Das Problem ist nur das diese Zeit gegenüber dem Betriebsystem 1h hintenreinhinkt!

Irgendeine Idee ?? Gibts noch andere Möglichkeiten die Zeit zu berechnen auszugeben unter Perl ??

Greets

sven

  1. Hallo Forumgemeide

    Ich hab folgendes Problem, in meinem CGI-Script benutzte ich folgendes Script:

    $date = (scalar localtime);

    $date hat dann einen Wert der in etwa so aussieht:
    Thu Mar 11 21:47:45 1999

    Das Problem ist nur das diese Zeit gegenüber dem Betriebsystem 1h hintenreinhinkt!

    Irgendeine Idee ?? Gibts noch andere Möglichkeiten die Zeit zu berechnen auszugeben unter Perl ??

    weil das Greenwich zeit ist...  eh klar oder?

    :)

    CU
    Rufinus

    1. Morgen!

      weil das Greenwich zeit ist...  eh klar oder?

      Na wenn es doch aber localtime() heisst? Sollte dann nicht die hiessige Zeit zurueckkommen?

      Calocybe

      1. Morgen!

        weil das Greenwich zeit ist...  eh klar oder?

        Na wenn es doch aber localtime() heisst? Sollte dann nicht die hiessige Zeit zurueckkommen?

        Calocybe

        localtime hin oder her...  weis jemand wie ich es schaffe das mir das teil den richtigenwert liefert ???

        MfG

        Sven

        1. Hallo Sven !

          $nowinsec = time();
          $nowinsec=$nowinsec+3600;
          $now = localtime($nowinsec);

          So müßte es funktionieren.

          Gruß
          Jörg

          1. Hi,

            $nowinsec = time();
            $nowinsec=$nowinsec+3600;
            $now = localtime($nowinsec);

            eigentlich sollte localtime(time) schon reichen...

            Cheatah

            1. Hi,

              eigentlich sollte localtime(time) schon reichen...

              Nee, reicht gar nicht  ;-)  Klammern vergessen:  localtime(time())

              Ist ein gern gemachter Anfaengerfehler. Nein Cheatah, nicht Du, bei Dir war's natuerlich nur die Fluechtigkeit. :-)

              Calocybe

              1. Hi,

                eigentlich sollte localtime(time) schon reichen...

                Nee, reicht gar nicht  ;-)  Klammern vergessen:  localtime(time())

                doch, reicht. Ist bei mir ohne Klammern im Einsatz.

                Was die Zeitkorrektur betrifft: Ich hatte vermutet (ungeprüft), daß localtime und localtime(time) unterschiedliche Werte zurückgeben, also der Fehler damit schon korrigiert wäre. Wenn er das nicht ist, muß natürlich noch eine 3600 addiert werden :-)

                Cheatah

                1. Hi,

                  Nee, reicht gar nicht  ;-)  Klammern vergessen:  localtime(time())
                  doch, reicht. Ist bei mir ohne Klammern im Einsatz.

                  Oops, jetzt hab ich mich aber in die Nesseln gesetzt. Naja, das ist manchen Sprachen halt mit Klammern (z.B. JS), in anderen ohne (Perl eben), da verwechselt man schon mal was. Der Hammer ist mal wieder ein M$-Produkt: Visual Basic. Mal MUSS man die Klammern hinschreiben, mal DARF man sie nicht hinschreiben. Aber die haben ja sowieso nen Knall.

                  Calocybe

            2. Hi,

              $nowinsec = time();
              $nowinsec=$nowinsec+3600;
              $now = localtime($nowinsec);

              eigentlich sollte localtime(time) schon reichen...

              Cheatah

              hi cheatha !

              verstehe ich nicht. es ging doch darum, daß die angegebene Zeit eine stunde hinterherhinkt.
              also muß man 3600 (60x60) für eine stunde addieren
              bevor localtime in funktion tritt. oder?
              gruß
              joerg

              1. Hi,

                verstehe ich nicht. es ging doch darum, daß die angegebene Zeit eine stunde hinterherhinkt.

                Nanu? Stimmt ja. Da haben wir beide (Cheatah und ich) in der Fluechtigkeit wieder nicht richtig nachgedacht. Also jetzt noch mal richtig:

                localtime(time() + 3600)

                Jetzt hammer's aba!

                Calocybe