Zeitangaben, rechnen mit: Unterschied zwischen den Versionen

Aus FHEMWiki
Zeile 16: Zeile 16:
* <code>time_str2num("YYYY-MM-DD HH:MM:SS")</code> wandelt einen FHEM-Zeitstempel in Sekunden um, siehe [https://fhem.de/commandref_DE.html#perl]
* <code>time_str2num("YYYY-MM-DD HH:MM:SS")</code> wandelt einen FHEM-Zeitstempel in Sekunden um, siehe [https://fhem.de/commandref_DE.html#perl]
* <code>timelocal(<Sekunden>, <Minuten>, <Stunden>, <Tag des Monats>, <Monat>, <Jahr>)</code> wandelt einen Satz von Zeitelementen (Sekunden, Minuten, Stunden usw.) in Sekunden um, siehe [http://perldoc.perl.org/Time/Local.html]
* <code>timelocal(<Sekunden>, <Minuten>, <Stunden>, <Tag des Monats>, <Monat>, <Jahr>)</code> wandelt einen Satz von Zeitelementen (Sekunden, Minuten, Stunden usw.) in Sekunden um, siehe [http://perldoc.perl.org/Time/Local.html]
* <code>Sekunden + Minuten * 60 + Stunden * 60 * 60 + Tage * 24 * 60 * 60</code> berechnen eines Summanden oder Subtrahenden aus Sekunden, Minuten, Stunden und Tagen.
==== Beispiel: Zeitstempel eines Readings in Sekunden umwandeln ====
==== Beispiel: Zeitstempel eines Readings in Sekunden umwandeln ====
   time_str2num(ReadingsTimestamp(<devicename>, <reading>,<defaultvalue>))
   time_str2num(ReadingsTimestamp(<devicename>, <reading>,<defaultvalue>))

Version vom 23. Januar 2018, 12:02 Uhr


Clock - Under Construction.svg An dieser Seite wird momentan noch gearbeitet.


Mit leicht lesbaren Zeitangaben, wie 07:30, 23.05.2017, 09:20 usw. kann in FHEM nicht ohne Weiteres gerechnet werden, da es sich um Zeichenketten handelt und nicht um Zahlen.

Verfahren zum Rechnen mit Zeitangaben, die als Zeichenkette vorliegen

Die Berechnung erfolgt in Perl. Das Verfahren besteht aus drei Schritten:

  • Umwandeln der Zeichenketten in eine Zahl, z.B. Sekunden.
  • Berechen einer Zeit als Zahl.
  • Umwandeln der Zahl in eine Zeichenkette (Formatierung)

Umwandeln eine Zeichenkette in eine Zahl

Hier hängt das Verfahren von der Struktur der Zeichenkette ab.

Perl und FHEM stellen Funktionen zur Umwandlung bereit.

  • time liefert die aktuelle Zeit in Sekunden, siehe [1]
  • time_str2num("YYYY-MM-DD HH:MM:SS") wandelt einen FHEM-Zeitstempel in Sekunden um, siehe [2]
  • timelocal(<Sekunden>, <Minuten>, <Stunden>, <Tag des Monats>, <Monat>, <Jahr>) wandelt einen Satz von Zeitelementen (Sekunden, Minuten, Stunden usw.) in Sekunden um, siehe [3]
  • Sekunden + Minuten * 60 + Stunden * 60 * 60 + Tage * 24 * 60 * 60 berechnen eines Summanden oder Subtrahenden aus Sekunden, Minuten, Stunden und Tagen.

Beispiel: Zeitstempel eines Readings in Sekunden umwandeln

 time_str2num(ReadingsTimestamp(<devicename>, <reading>,<defaultvalue>))

Berechnung

Umwandeln der Zahl in eine Zeichenkette

Weitere Funktionen zur Zeitumwandlung