Volker: Server ermittelt Zeit nicht richtig

Hallo,
folgendes Programm liefert mir die falsche Zeit (!). - Dies allerdings nur auf einem gewissen Server4you Servern. Auf anderen stimmt die Zeit, die das Prg ermittelt.

Meine Frage: Gibt es eine andere Möglichkeit, die Zeit in einem Perlprg zu ermitteln als localtime des Servers, die ja anscheinend falsch oder zeitversetzt ist?

Übrigens bei der Hotline geht niemand hin.

Beste Grüsse
Volker

timetest.pl:

#!/usr/bin/perl

print "content-type: text/html \n\n";

sub get_date {

# Define arrays for the day of the week and month of the year.           #
    @days   = ('Sonntag','Montag','Dienstag','Mittwoch',
               'Donnerstag','Freitag','Samstag');
    @months = ('Januar','Februar','März','April','Mai','Juni','Juli',
          'August','September','Oktober','November','Dezember');

# Get the current time and format the hour, minutes and seconds.  Add    #
    # 1900 to the year to get the full 4 digit year.                         #
    ($sec,$min,$hour,$mday,$mon,$year,$wday) = (localtime(time))[0,1,2,3,4,5,6];
    if ($hour<12) { $hour += 12 }
    else { $hour -= 12; $mday += 1 ; $min += 28 }
    $time = sprintf("%02d:%02d:%02d",$hour,$min,$sec);
    $year += 1900;

# Format the date.                                                       #
    $date = "$days[$wday],den $mday. $months[$mon] $year um $time";

}

&get_date;

print $date;

  1. Hoi Volker,

    Meine Frage: Gibt es eine andere Möglichkeit, die Zeit in einem Perlprg zu ermitteln als localtime des Servers,

    Du kannst Dir vielleicht einen Timeserver suchen. Grosse Netzwerke (Unis) benutzen sowas, um auf allen Rechnern die gleiche Zeit zu haben. Musst mal suchen, ob es sowas auf im Web for free gibt. Ich denke aber schon.

    Ansonsten gibt es doch auch Webseiten, die die aktuelle Uhrzeit anzeigen. Wenn Du diese Seite einfach laedst und auswertest, dann hast Du die Zeit ...

    Gruss Christoph

  2. Hallo Volker,

    Die Serverzeit bzw. Zeitzone ist imho abhängig von den Einstellungen auf dem Serverrechner. Je nach Einstellung kann imho localtime() verschieden Werte zurückgeben.
    Mit localtime(time() + $zeitverschiebung_in_sekunden); kannst Du das für jeden Rechner anpassen.

    if ($hour<12) { $hour += 12 }

    ^^^^^^^^....^^^^^^^^^^^^..........?

    else { $hour -= 12; $mday += 1 ; $min += 28 }

    ^^^^^....................^^^^^......?

    Mich würde aber noch interresieren, was diese Teile des Skriptes bewirken sollen?

    Gruß AlexBausW

    1. Hallo Volker,

      Die Serverzeit bzw. Zeitzone ist imho abhängig von den Einstellungen auf dem Serverrechner. Je nach Einstellung kann imho localtime() verschieden Werte zurückgeben.
      Mit localtime(time() + $zeitverschiebung_in_sekunden); kannst Du das für jeden Rechner anpassen.

      if ($hour<12) { $hour += 12 }
                 ^^^^^^^^....^^^^^^^^^^^^..........?
          else { $hour -= 12; $mday += 1 ; $min += 28 }
                          ^^^^^....................^^^^^......?

      Mich würde aber noch interresieren, was diese Teile des Skriptes bewirken sollen?

      Gruß AlexBausW

      Hallo Alex,

      vergiss die Zeilen ... waren Reste von Tests ...

      danke für Deinen Hinweis. Ich werde Ihn gleich ausprobieren.

      Besten Dank
      Volker

    2. Hallo Volker,

      Die Serverzeit bzw. Zeitzone ist imho abhängig von den Einstellungen auf dem Serverrechner. Je nach Einstellung kann imho localtime() verschieden Werte zurückgeben.
      Mit localtime(time() + $zeitverschiebung_in_sekunden); kannst Du das für jeden Rechner anpassen.

      if ($hour<12) { $hour += 12 }
                 ^^^^^^^^....^^^^^^^^^^^^..........?
          else { $hour -= 12; $mday += 1 ; $min += 28 }
                          ^^^^^....................^^^^^......?

      Mich würde aber noch interresieren, was diese Teile des Skriptes bewirken sollen?

      Gruß AlexBausW

      Jetzt funzt alles.
      Danke
      Volker

  3. Hi,

    folgendes Programm liefert mir die falsche Zeit (!). - Dies allerdings nur auf einem gewissen Server4you Servern. Auf anderen stimmt die Zeit, die das Prg ermittelt.

    in welcher Zeitzone steht der entsprechende Server?

    Meine Frage: Gibt es eine andere Möglichkeit, die Zeit in einem Perlprg zu ermitteln als localtime des Servers, die ja anscheinend falsch oder zeitversetzt ist?

    perldoc perllocale
    perldoc -f gmtime

    Cheatah