Änderung 99_Utils.pm

Begonnen von Tobias, 05 August 2013, 10:30:00

Vorheriges Thema - Nächstes Thema

Tobias

Hallo Rudi,
sorry für das vorschnelle Einchecken, hab es total verpeilt... die 99_Utils erschien mir "unwichtig" :(
Soll nicht wieder vorkommen.

Hier mal die Änderung für alle:
Die Funktion time_str2num($) hat sich geändert. Wenn man nun einen Leerstring der Funktion übergibt, wird der aktuelle Timestamp verwendet.

-  my @a = split("[- :]", $str);
-  return mktime($a[5],$a[4],$a[3],$a[2],$a[1]-1,$a[0]-1900,0,0,-1);
+  my @a;
+  if($str ne "") {
+    @a = split("[- :]", $str);
+    return mktime($a[5],$a[4],$a[3],$a[2],$a[1]-1,$a[0]-1900,0,0,-1);
+  } else {
+    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
+    return mktime($sec, $min, $hour, $mday, $mon, $year, 0, 0, -1);
+  }
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

rudolfkoenig

Also eine aufwendige Version von "time()".
Wer braucht es in time_str2num?

rudolfkoenig

Nicht falsch verstehen, ich will Mitarbeit auch an Fremdmodulen haben, aber ich will, dass jemand sich mit einem bestimmten Modul sowohl auskennt (ueber alle Aenderungen Bescheid weiss, damit nicht etwas auf 2 Arten eingebaut wird), als auch sich verantwortlich fuehlt, wenn ein Fehler gemeldet wird.

Ich will nicht die Fehler der Vergangenheit wiederholen...

betateilchen

Die oben veränderte Funktion ist übrigens eine der beiden, zu denen in der commandref in 99_Utils noch die Doku fehlt, weil ich nicht herausfinden konnte, was diese beiden Zeitfunktionen eigentlich machen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

time_str2num konvertiert die Textdarstellung (2013-08-05 11:22:55) zu Sekunden nach 1970 (Unix-Zeitformat), um damit rechnen zu koennen. D.h. wenn man 1 Tag addieren will, dann ruft man
  FmtDateTime(time_str2num("2013-08-05 11:22:55")+86400)
auf.

Es gibt auch elegantere Datumsmodule in perl, aber sie zu installieren ist (war?) auf den meisten Systemen ein Qual, da sie eine unmenge anderer Module mitinstallieren wollen, k.A. wozu.