FHEM Forum

FHEM => Automatisierung => Perl für FHEM-User => Thema gestartet von: TomLee am 05 März 2023, 10:47:31

Titel: [geklärt] Verwendung von Time::Piece unter Perl 5.28
Beitrag von: TomLee am 05 März 2023, 10:47:31
Hi,

kann da wer bitte ein zwei Worte zu meinen zwei Fragezeichen sagen :

Zitat von: TomLee am 04 März 2023, 17:35:44

edit:

ohne Verwendung von localtime und time_str2num, direkt ein Time::Piece Objekt machen.
Warum man das use Time::Piece nicht braucht und vorallem das use Time::Piece erst mit Perl 5.8 vorhanden sein soll (bei mir ist 5.28 installiert), ist mir unklar.


my $t = Time::Piece->strptime('2023-03-03T14:01:38+00:00','%Y-%m-%dT%T%Z');
return $t->dmy('.').' '.$t->hms;


Thomas
Titel: Antw:Verwendung von Time::Piece unter Perl 5.28
Beitrag von: betateilchen am 05 März 2023, 11:14:38


--
Titel: Antw:Verwendung von Time::Piece unter Perl 5.28
Beitrag von: TomLee am 05 März 2023, 11:24:19
Zitat5.28 ist neuer als 5.8, weil 28 größer ist als 8

Das war mir nicht klar  ::) ;D

Jetzt schon, nachdem ich darauf gestossen wurde und mir mal dann den Versionsverlauf auch mal angeschaut habe, bspw. hier (https://en.wikipedia.org/wiki/Perl_5_version_history)

Danke
Titel: Aw: [geklärt] Verwendung von Time::Piece unter Perl 5.28
Beitrag von: TomLee am 09 September 2023, 11:49:07
Ich würde gerne prüfen was localtime->week am 01.01.24 ausgibt, einfach aus Interesse.

Was mach ich falsch, wie mach ich es richtig ?

sub testyweek{
my $ti = "Mon Jan 15 11:13:03 2024";
return $ti->week;
}
ergibt
Can't locate object method "week" via package "Mon Jan 15 11:13:03 2024" (perhaps you forgot to load "Mon Jan 15 11:13:03 2024"?) at ./FHEM/99_Calendar_Utils.pm line 17.
Titel: Aw: [geklärt] Verwendung von Time::Piece unter Perl 5.28
Beitrag von: betateilchen am 09 September 2023, 13:15:15
Dein $ti ist halt nur ein simpler string und kein object.
Titel: Aw: [geklärt] Verwendung von Time::Piece unter Perl 5.28
Beitrag von: TomLee am 09 September 2023, 13:28:36
Ok, danke.
Versteh ich jetzt nach nochmal genauer lesen so, das man das zuvor irgendwie "parsen" muss, mit dem Beispiel aus der Doku geht es also so:
sub tweek{

my $ti = Time::Piece->strptime("Monday 1 Jan, 2024",
                              "%A %d %b, %Y");
#my $ti = "Mon Jan 15 11:13:03 2024";
return $ti->week;
}
Titel: Aw: [geklärt] Verwendung von Time::Piece unter Perl 5.28
Beitrag von: TomLee am 09 September 2023, 13:51:12
Ist die default Sprache (locale) die strptime nutzt Englisch ? Und nicht die, die im System eingestellt ist ?

Eingestellt hab ich nämlich Deutsch:
Zitatpi@FHEMPIOS:~ $ localectl status
   System Locale: LANG=de_DE.UTF-8
                  LANGUAGE=de_DE
       VC Keymap: n/a
      X11 Layout: gb
       X11 Model: pc105

Wenn ich Montag verwende bekomme ich das zurück:
ZitatError parsing time at /usr/lib/arm-linux-gnueabihf/perl/5.28/Time/Piece.pm line 583.
Titel: Aw: [geklärt] Verwendung von Time::Piece unter Perl 5.28
Beitrag von: TomLee am 09 September 2023, 14:03:40
Was ich ursprünglich prüfen wollte hat sich bestätigt. Bspw. wird am 29.12.2025 der falsche Wert zurückgegeben.
Titel: Aw: [geklärt] Verwendung von Time::Piece unter Perl 5.28
Beitrag von: herrmannj am 09 September 2023, 14:27:33
?
Titel: Aw: [geklärt] Verwendung von Time::Piece unter Perl 5.28
Beitrag von: TomLee am 09 September 2023, 14:36:46
Am 29.12.2025 ist KW 1 und nicht 52, oder ?

Alles gut, es liegt an mir und hab mich vertan !
Titel: Aw: [geklärt] Verwendung von Time::Piece unter Perl 5.28
Beitrag von: TomLee am 05 Oktober 2023, 19:33:55
Hallo,

hat hier bitte einer eine Erklärung für mich warum nach jedem shutdown restart das Objekt week nicht lokalisiert werden kann ?

Es handelt sich um ein userReadings:

cweek:triggered {cweek()}
das eigentlich funzt, bis zu dem restart, danach kommt die Meldung

Error evaluating cal_Abfallkalender userReading cweek: Can't locate object method "week" via package "Thu Oct  5 19:06:49 2023" (perhaps you forgot to load "Thu Oct  5 19:06:49 2023"?) at ./FHEM/99_Calendar_Utils.pm line 12.
in dem Reading.

Wenn ich dann einfach nur die Funktion umbennene, klappt das wieder bis zu einem Neustart.

sub cweek {
return localtime->week;
}
Titel: Aw: [geklärt] Verwendung von Time::Piece unter Perl 5.28
Beitrag von: TomLee am 07 Oktober 2023, 16:03:32
Es wär nett wenn jemand dazu was sagt bzw. Hinweise gibt was ich noch liefern kann das ich die Ursache dafür finde, meine Pi starte ich zwar selten neu, es wär aber lästig jedes mal die Meldung dann auf meinem Wandtablet zu sehen wo ich auf der Screensaver-Seite die Kalenderwoche anzeige.
Titel: Aw: [geklärt] Verwendung von Time::Piece unter Perl 5.28
Beitrag von: TomLee am 05 November 2023, 13:16:07
Etwas weiter bin ich, die Funktion muss gar nicht umbenannt werden, es reicht wenn ich die myUtils (hier 99_Calendar_Utils.pm) einfach nur aufrufe und direkt so wie sie ist speichere, dann ist die Objektmethode auf einmal vorhanden.
Wenn ich jetzt oben in der 99_Calendar_Utils.pm ein use Time::Piece; vornehme und einen restart mache, ist die Objektmethode gleich vorhanden.

Was ich jetzt gerne verstehen würde ist, was jetzt der Unterschied ist zwischen dem laden der myUtils beim Start von FHEM und dem "einfach nochmal speichern" während FHEM läuft, wenn ich use Time::Piece; oben weglasse ?