Dieter: localtime(time)

Hi,

Mein Script enthält den folgenden Code:($sek,$min,$std,$tag,$mon,$jahr) = localtime(time);
if ($min < 10)
{
$min ='0'.min;
}

if ($tag < 10)
{
$tag ='0'.$tag;
}
if (++$mon < 10)
{
$mon ='0'.$mon;
}
if ($sek < 10)
{
$sek ='0'.$sek;
}
$jahr= $jahr + 1900;
$nowtime = "$tag.$mon.$jahr $std:$min:$sek";

Das Problem:
Es liefert die aktuelle Rechnerzeit zurück, die zwei Stunden hinter der aktuellen Zeit liegt
18.09.1999 21:45:06 sollte also lauten:
18.09.1999 23:45:06.
Ich finde die Lösung nicht, zwei Stunden aufzuaddieren
Als falsch herausgestellt haben sich:
$std = $std + 2;
$std = $std + 7200;
($sek,$min,$std,$tag,$mon,$jahr) = localtime(time)+ 7200;

Kennt jemand eine Lösung?
Gruß
Dieter

  1. Moin!

    $std = $std + 2;
    $std = $std + 7200;
    ($sek,$min,$std,$tag,$mon,$jahr) = localtime(time)+ 7200;

    Das was Du da tun willst, geht mit
         ($sek,$min,$std,$tag,$mon,$jahr) = localtime(time() + 7200);

    Es liefert die aktuelle Rechnerzeit zurück, die zwei Stunden hinter der aktuellen Zeit liegt

    Aber irgendwie ist bei Dir irgendwas falsch eingestellt. Bei mir gibt localtime() die richtige, bei mir in der RTC (real time clock) eingestellte Zeit zurueck:

    I:> perl -e "print scalar gmtime(time)"
    Sat Sep 18 00:17:27 1999
    I:> perl -e "print scalar localtime(time)"
    Sat Sep 18 02:17:38 1999

    Ich hab die RTC, also die im Rechner eingebaute Uhr, auf die richtige Zeit gestellt, und dann dem Windows gesagt, dass ich zwei Stunden vor GMT lebe. Check doch mal ab, wie das bei Dir ist.

    So far, Calocybe

    1. Moin!

      $std = $std + 2;
      $std = $std + 7200;
      ($sek,$min,$std,$tag,$mon,$jahr) = localtime(time)+ 7200;

      Das was Du da tun willst, geht mit
           ($sek,$min,$std,$tag,$mon,$jahr) = localtime(time() + 7200);

      Es liefert die aktuelle Rechnerzeit zurück, die zwei Stunden hinter der aktuellen Zeit liegt

      Aber irgendwie ist bei Dir irgendwas falsch eingestellt. Bei mir gibt localtime() die richtige, bei mir in der RTC (real time clock) eingestellte Zeit zurueck:

      I:> perl -e "print scalar gmtime(time)"
      Sat Sep 18 00:17:27 1999
      I:> perl -e "print scalar localtime(time)"
      Sat Sep 18 02:17:38 1999

      Ich hab die RTC, also die im Rechner eingebaute Uhr, auf die richtige Zeit gestellt, und dann dem Windows gesagt, dass ich zwei Stunden vor GMT lebe. Check doch mal ab, wie das bei Dir ist.

      So far, Calocybe

      You`ve got it!!
      Danke - Gruß
      Dieter

  2. Hi Dieter,

    auch wenn das Problem schon gelöst ist,

    wenn du Zeit zu der Local Time hinzuaddieren willst, funzt das folgendermaßen:

    $Zeit_Berrichtigung  = +2;               #+1=inkrementiert die Zeit um 1 h
                                             #-1=dekrementiert die Zeit um 1 h
    ($sek,$min,$std,$tag,$mon,$jahr) = localtime(time+($Zeit_Berrichtigung*3600));

    viel Spaß ;-)

    MfG Olli *g*