FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Panik am 16 Oktober 2013, 22:07:01

Titel: Variable $month mit falschem Inhalt
Beitrag von: Panik am 16 Oktober 2013, 22:07:01
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?
Titel: Antw:Variable $month mit falschem Inhalt
Beitrag von: fiedel am 17 Oktober 2013, 09:11:58
Idee: Die Wertereihe beginnt bei Null (Januar)

...keine Panik!!! ;o)
Titel: Antw:Variable $month mit falschem Inhalt
Beitrag von: PeMue am 17 Oktober 2013, 20:03:45
hm, bei mir kommt mit
{$month} in der fhem Konsole der Wert
10

Gruß PeMue
Titel: Antw:Variable $month mit falschem Inhalt
Beitrag von: betateilchen am 17 Oktober 2013, 20:08:15
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.
Titel: Antw:Variable $month mit falschem Inhalt
Beitrag von: PeMue am 17 Oktober 2013, 20:16:05
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
Titel: Antw:Variable $month mit falschem Inhalt
Beitrag von: betateilchen am 17 Oktober 2013, 20:21:38
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.
Titel: Antw:Variable $month mit falschem Inhalt
Beitrag von: Panik am 18 Oktober 2013, 21:34:30
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.