Hallo,
in einem Teil meines Scriptes verwende ich den Ausdruck
my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime(time);
Merkwürdigerweise hat die Variable $month anschließend den Wert "9" - jetzt im Oktober!
Ich wüßte nicht, woher das rührt, da sonst alle Zeitangaben auch in Logs korrekt sind.
Hat jemand Ideen?
Idee: Die Wertereihe beginnt bei Null (Januar)
...keine Panik!!! ;o)
hm, bei mir kommt mit
{$month}
in der fhem Konsole der Wert
10
Gruß PeMue
ja, in Deinem Fall ist $month ja auch eine Variable, die aus fhem kommt und nicht aus einer perl-Zuweisung wie beim Fragesteller, der aus localtime() die Einzelkomponenten generiert.
ok verstanden. Aber woher weiß dann die entsprechende Funktion, welche $month jetzt gerade gültig ist (globale vs. lokale Variablen)? Oder Panik muss alle seine Werte mit +1 versehen, damit es wieder allgemein "verständlich" ist ...
Gruß PeMue
Eine lokale Variable ist nur innerhalb der Funktion existent, in der sie definiert wurde.
Und die globalen fhem-Variablen wie $month oder $we stehen z.B. in der 99_myUtils überhaupt nicht zur Verfügung, weil die nicht dorthin vererbt werden. Wenn Du die in der 99_myUtils nutzen willst, musst Du sie direkt im Funktionsaufruf als Parameter (z.B. aus einem notify) mit übergeben.
Hallo,
Danke für die Antworten!
Es ist tatsächlich so, daß gerade bei Monat von 0-11 gezählt wird. Es muss 1 addiert werden, um zum richtigen Monat zu kommen.
Unter http://sysadminscorner.uherbst.de/perl/date.html (http://sysadminscorner.uherbst.de/perl/date.html) ist das ganz gut erklärt und eine recht nützliche Subroutine
für Datumsbehandlungen in Perl angegeben, die auch Merkwürdiges bei der Jahreszahl behebt.