Probleme mit time in cgi

Hallo,
ich habe ein kleines problem mit der Zeit in CGI.
Ich habe meine Page auf www.virtualave.com.
Nun ist aber das problem, dass wenn ich da ein guestbook habe, und sich leute von deutschland eintragen, die zeit von amerika da steht (da die ziet ja von dem server genommen wird und der in amerika steht). Nun meine frage.
Kann ich die zeit irgend wie aendern?
Oder kann ich sogar die zeit von einem anderen server nehmen, der in deutschland steht??
Danke
cya

Steffen

das ist ganz einfach. du liest die zeit des servers in amerika ein [„time()“]. du erhälst so die zahl der sekunden die seit dem 1.1.1970 vergangen sind. allerdings ist das dann halt für amerika.
um die zeit von deutschland zu erhalten mußt du nur den zeitunterschied zu der ausgelesenen zeit addieren (in sekunden). die sekundenanzahl, die du dann erhälst gibt dir mit „localtime()“ dann die aktuellen werte von deutschland aus.

der zeitunterschied zu den virtualave servern beträgt 9 oder 10 stunden - glaube ich. du mußt also 32400 oder 36000 sekunden zu der ausgelesen zeit dazuaddieren.

tschüß…
…puhli

noch ein beispiel
hier ist jetzt noch mal ein beispiel zur veranschaulichung

zeit einlesen

$mytime = time();

zeitunterschied hinzufügen

$mytime = $mytime + 32400;

werte wie tag, monat uws ermitteln

(@time) = localtime($mytime);

das ist der ganze zauber

Hallo,

ich bin auch bei vitualave und habe das Problem auch so behandelt.
Allerdings gibt es einen kleinen Schönheitsfehler. Bei uns wird die Uhr am 25.3.2001 um 2:00 Uhr um eine Stunde vorgestellt, in Seattle wo die Virtualave Server stehen wird die Uhr am 1.4.2001 um 2:00 umgestellt. Die sieben Tage dazwischen geht dann die Uhr in Deinem Gästebuch eine Stunde vor.
Das ist nur ein kleiner Schönheitsfehler, aber vielleicht hat ja jemand eine Lösung, die das automatisch macht. Was ist eigentlich der Unterschied zwische localtime und gmtime. Wenn man irgendwie die GMT bekommen könnte, müsste man nur noch die deutsche Zeitverschiebung berücksichtigen, was imho auch eine Hilfe wäre.

Das ist nur ein kleiner Schönheitsfehler, aber vielleicht hat
ja jemand eine Lösung, die das automatisch macht. Was ist
eigentlich der Unterschied zwische localtime und gmtime. Wenn
man irgendwie die GMT bekommen könnte, müsste man nur noch die
deutsche Zeitverschiebung berücksichtigen, was imho auch eine
Hilfe wäre.

Wie wäre es damit?

my $date = time; # oder welche Zeit Du auch immer ‚wandeln‘ willst.

my $isDst = (localtime($date))[8];
my $finaledate = gmtime($date+3600*($isDst+1));

Klaus

Hallo Klaus,

leider habe ich zum testen nur Active Perl und ich bin auch nicht so der Perls Freak.
Ganz verstanden habe ich das Programm nicht:

my $date = time;

Ist time die Zeit in GMT oder lokal? Unter Win ist sie lokal

my $isDst = (localtime($date))[8];

Ist isDst die Differenz zwischen lokal und GMT in Stunden?
Unter Win is isDst null.

my $finaledate = gmtime($date+3600*($isDst+1));

Angenommen date ist die lokale Zeit, dann addiere ich die Zeitverschiebung zur GMT und erhalte die GMT, dann addiere ich die Zeitverschiebung Deutschland-GMT zur GMT dann erhalte ich Deutsche Zeit in Sekunden. Um das wieder in Stunden und Tagen zu haben müßte ich jetzt doch localtime benutzen und nicht gmtime. Oder ist date die GMT? Woher weiß der Rechner die Zeitverschiebung zur GMT?

Anderer Vorschlag wäre das Folgende, erfordert allerdings das Modul Local:

usr Local;
$finaldate=localtime(timegm(gmtime(time))+3600*$Zeitverschiebung);

Kann die ganze Geschichte zur Zeit leider nur unter Win testen, und das macht nicht viel Sinn, da gmtime und localtime gleich sind.

Ludwig Weinzierl

my $date = time;

Ist time die Zeit in GMT oder lokal? Unter Win ist sie lokal

time ist die Zeit in Sekunden seit dem 1.1.1970 GMT

my $isDst = (localtime($date))[8];

Ist isDst die Differenz zwischen lokal und GMT in Stunden?

$isDst ist die DayLight-Saving Time (DST) - sie ist entweder 0 oder 1 abhängig davon ob die angebene Zeit im Sommerzeitintervall liegt oder nicht.
Also jetzt gerade 0

Unter Win is isDst null.

klar, das hat aber nichts mit WIndows zu tun, sodnern weil wir im Moment (time) keine Sommerzeit haben.

my $finaledate = gmtime($date+3600*($isDst+1));

Angenommen date ist die lokale Zeit, dann addiere ich die
Zeitverschiebung zur GMT und erhalte die GMT, dann addiere ich
die Zeitverschiebung Deutschland-GMT zur GMT dann erhalte ich
Deutsche Zeit in Sekunden. Um das wieder in Stunden und Tagen
zu haben müßte ich jetzt doch localtime benutzen und nicht
gmtime. Oder ist date die GMT? Woher weiß der Rechner die
Zeitverschiebung zur GMT?

also, nochmal langsam.
$date ist die GMT Zeit oder jeder beliebige andere Zeitpunkt in GMT.
my $isDst = (localtime($date))[8];
bestimmt ob zum Zeitpunkt $date Sommer- oder Winterzeit ist.

my $finaledate = gmtime($date+3600*($isDst+1));
Ist die GMT + Sommerzeit Versatz (wenn DST 1 ist).
Die Differenz zwischen GMT und unsere lokalen Zeit ist 1 Std - deshalb nochmal 3600 Sekudnen dazu.

Alles klar, Danke! (oT)
oT