Server ermittelt Zeit nicht richtig
Volker
- perl
0 Christoph Probst0 AlexBausW0 Cheatah
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;
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
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 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
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
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