[fhem.pl] patch: Erweiterung der Funktion GetTimeSpec()

Begonnen von betateilchen, 04 April 2023, 11:39:45

Vorheriges Thema - Nächstes Thema

betateilchen

Hallo Rudi,

ich schlage unten stehenden patch vor, um künftig auch Zeitangaben wie "2023-04-08T18:00:00" als gültig zu erkennen und bitte um wohlwollende Prüfung.


Index: fhem.pl
===================================================================
--- fhem.pl     (revision 27380)
+++ fhem.pl     (working copy)
@@ -3788,6 +3788,9 @@
   } elsif($tspec =~ m/^([0-9]+):([0-5][0-9])$/) {         # HH:MM
     ($hr, $min, $sec) = ($1, $2, 0);
 
+  } elsif($tspec =~ m/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)$/) {
+    ($hr, $min, $sec) = ($4, $5, $6);
+
   } elsif($tspec =~ m/^{(.*)}$/) {                        # {function}
     $fn = $1;
     $tspec = AnalyzeCommand(undef, "{$fn}");

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Das ignorieren der Datumsangaben ist meiner Meinung nach ein Problem, da es dem Benutzer was falsches suggeriert.
Falls wir einen Weg finden, dem Benutzer das klarzumachen, dann baue ich das ein.

xenos1984

Ich würde es auch etwas kritisch sehen, die Funktion so zu erweitern, dass sie das Datum ignoriert. at nimmt ja auch ein ISO8601 Datum/Zeit als ganzes an, und dann würden at und GetTimeSpec auf einmal den gleich Input als gültig ansehen, aber anders interpretieren. Wenn der Benutzer das Datum ignoriert haben möchte, was spricht dagegen, dies explizit zu tun, und nur den Teil nach dem T an GetTimeSpec zu geben?

betateilchen

Zitat von: xenos1984 am 05 April 2023, 13:03:38at nimmt ja auch ein ISO8601 Datum/Zeit als ganzes an,

Wenn Du in at ein ISO8601 Format übergibst, landet das erst gar nicht in GetTimeSpec().
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#4
Zitat von: rudolfkoenig am 05 April 2023, 11:21:38Das ignorieren der Datumsangaben ist meiner Meinung nach ein Problem, da es dem Benutzer was falsches suggeriert.

Welcher Benutzer greift denn auf diese Funktion zu?
Neulich musste ich mir anhören, dass eine Funktion ja vorrangig für Entwickler sei, weswegen ein Vorschlag abgelehnt wurde und heute wird das Bild genau umgedreht, weil es für den Benutzer sei?
Entscheidet Euch bitte irgendwann - möglichst zuverlässig.

Übrigens liefert GetTimeSpec() selbst gar keine Datumwerte zurück:

    ($err, $hr, $min, $sec, $fn) = GetTimeSpec($tspec);
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

ZitatÜbrigens liefert GetTimeSpec() selbst gar keine Datumwerte zurück:
Genau das ist mein Problem, auch deswegen wird das Format in at selbst geprueft und nicht in GetTimeSpec

ZitatWelcher Benutzer greift denn auf diese Funktion zu?
Die Funktion wird verwendet von at, SetExtensions, und 17 weiteren Modulen, die on-till selbst implementieren, damit ist das Format fuer Enduser relevant.
Wie ich die Leute kenne, wird von irgendwelchen Quellen was zusammenkopiert, ohne Doku zu lesen, und sich beschwert, weil nicht das passiert, was man erwartet.

Warum ist dieses Format so interessant?

betateilchen

Zitat von: rudolfkoenig am 06 April 2023, 11:56:16zusammenkopiert, ohne Doku zu lesen, und sich beschwert, weil nicht das passiert, was man erwartet.

Für solche Fälle habe ich schon lange kein "Mitleid" mehr.

Zitat von: rudolfkoenig am 06 April 2023, 11:56:16Warum ist dieses Format so interessant?

Diese Diskussion ist müßig.

Laß gut sein, ich habe mein Vorhaben inzwischen bereits anders gelöst. Es wäre halt auf dem vorgeschlagenen Weg um einiges einfacher gegangen, wenn ich eine bereits vorhandene Funktion dafür hätte verwenden können. Und ich wette, dass die Änderung niemandem jemals wehgetan hätte.

Zitat von: rudolfkoenig am 06 April 2023, 11:56:16SetExtensions, und 17 weiteren Modulen, die on-till selbst implementieren

Das bedeutet für mich lediglich, dass 17 Module den Code für on-till einfach stumpf kopiert haben und vermutlich überhaupt nichts von diesem Datumformat wissen  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!