FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: FhemPiUser am 27 Februar 2017, 21:19:21

Titel: Fehler mit data-substitution="toDate()"?
Beitrag von: FhemPiUser am 27 Februar 2017, 21:19:21
Es scheint mir, als gäbe es noch einen Fehler beim data-substition="toDate()".

Habe folgende Zeilen in meiner html:

<div data-type="label" data-device="httpmod_dwd_alerts" data-get="alert_starts-1" data-pre-text="von " data-substitution="toDate().hhmm()" class="cell left-align inline timestamp"></div>
<div data-type="label" data-device="httpmod_dwd_alerts" data-get="alert_ends-1" data-pre-text="bis " data-substitution="toDate().hhmm()" class="cell left-align inline timestamp"></div>


Die Readings alert_starts-1 und alert_ends-1 sind unterschiedlich und laut fhem wie folgt:

alert_ends-1 1488247200
alert_starts-1 1488225600


trotzdem zeigt er in FTUI bei beidem die gleiche Uhrzeit an:

von 21:11   bis 21:11
Titel: Antw:Fehler mit data-substitution="toDate()"?
Beitrag von: setstate am 28 Februar 2017, 08:16:32
Du hast aber class="timestamp"

Damit wird der Zeitstempel angezeigt und nicht der Wert.
Titel: Antw:Fehler mit data-substitution="toDate()"?
Beitrag von: FhemPiUser am 28 Februar 2017, 10:26:08
die zeit paasr aber grob und ohne class timestamp hatte ich es auch probiert ubd da wurden dann ganz wilde zeiten angezeigt...

Titel: Antw:Fehler mit data-substitution="toDate()"?
Beitrag von: setstate am 28 Februar 2017, 11:09:40
Ohne timestamp nimmt er den Wert. Und dann toDate angewendet, ergibt den Müll.
Was befeutet dieser Zahlen-Wert? Irgendwas in Sekunden? Seit wann gezählt? Da gibt es bestimmt keine sinnvolle toDate Funktion.
Titel: Antw:Fehler mit data-substitution="toDate()"?
Beitrag von: FhemPiUser am 28 Februar 2017, 12:24:49
die werte (z.b. 1488247200) ist unix tinestamp seit 1970, zumindest konvertieren die üblichen timestamp online converter (z.b. www.onlineconversion.com/unix_time.html) das in das korrekte datum...
Titel: Antw:Fehler mit data-substitution="toDate()"?
Beitrag von: setstate am 28 Februar 2017, 12:32:02
Dann muss ich das in toDate reinbauen. Wenn alles Zahlen bestimmter Größe, dann von unixtimestamp zu js Datum
Titel: Antw:Fehler mit data-substitution="toDate()"?
Beitrag von: FhemPiUser am 28 Februar 2017, 15:06:24
das wäre super.

was hattest du denn als input für das toDate() angenommen, wenn es nicht unix timestamp war?
Titel: Antw:Fehler mit data-substitution="toDate()"?
Beitrag von: setstate am 28 Februar 2017, 15:11:11

        var m = str.match(/(\d+)-(\d+)-(\d+)[_\s](\d+):(\d+):(\d+).*/);
        var m2 = str.match(/(\d\d).(\d\d).(\d\d\d\d)/);


Ent-oder-weder :-)
Titel: Antw:Fehler mit data-substitution="toDate()"?
Beitrag von: FhemPiUser am 28 Februar 2017, 15:47:06
ahh ok.

bei der gelegenheit hätte ich neben der unix timestamp konvertierung noch interesse an einer methode toDate().ddmmhhmm(), also datum mit uhrzeit (z.b. 28.02. 16:00)
Titel: Antw:Fehler mit data-substitution="toDate()"?
Beitrag von: Standarduser am 12 April 2017, 18:12:44
Ich habe auch noch einen Fehler gefunden. Mein Reading liefert eine Zeit in Sekunden, soll aber als hh:mm:ss angezeigt werden. Dafür verwende ich

<div data-type="label" data-device="DG.ku.MM.Squeezebox" data-get="durationAll" data-substitution="toDate().hhmmss()" data-pre-text="Spieldauer " data-color="#6f6f6f" class="inline"></div>

Das Reading enthält den Wert 2958, was 49 Minuten und 20 Sekunden entspricht. Angezeigt wird aber 01:49:18
Titel: Antw:Fehler mit data-substitution="toDate()"?
Beitrag von: Mundus am 12 April 2017, 22:47:03
Bei mir aktualisiert die Funktion toDate() -genutzt in einem Swipe- nur den ersten Datumswert und scheint, bei einem Swipe-Wechsel, keine neue Substitution durchzuführenn.
Titel: Antw:Fehler mit data-substitution="toDate()"?
Beitrag von: funktionaer am 18 August 2017, 14:48:34
Hallo,

ich versuche, mit data-substitution="toDate().hhmm()" in einem Label den Wert eines Readings anzuzeigen. Das Reading liefert 8880, sollte also 02:28 sein. Berechnet wird jedoch 03:28. Bei der Berechnung von 0 Sekunden liefert die Funktion 01:00, also auch wieder genau eine Stunde zu viel.

Ist toDate() hier die richtige Herangehensweise?

Danke,
funktionaer
Titel: Antw:Fehler mit data-substitution="toDate()"?
Beitrag von: setstate am 18 August 2017, 16:10:02
Das liegt daran, weil die Ausgabe mit GMT+0100 erfolgt. Also mit Sommerzeit. Lässt sich in der Funktion noch optimieren.

fhem-tablet-ui.js ändern in

Zeile 1611


            (m2) ? new Date(70,1,1,0,0,m2[1],0) :
Titel: Antw:Fehler mit data-substitution="toDate()"?
Beitrag von: yersinia am 07 August 2019, 14:21:38
Ich kram' den Thread nochmal hervor weil ich gern einen etwas anders zusammengesetzten Datumswert aus einem DOIF timer Reading gern durch ein label-widget gekürzt hätte.

Reading des DOIFs im Format DD.MM.YYYY HH:MM:SS:
2019-08-07 13:19:32   timer_01_c01    07.08.2019 21:50:27

Wenn ich in dem label-widget data-substitution mit der Funktion toDate().ddmmhhmm() verwende
<div class="cell darker top-narrow"
  data-type="label"
  data-device="DOIF_DEVICE"
  data-get="timer_01_c01"
  data-substitution="toDate().ddmmhhmm()">
</div>

kommt dabei
07.08. 02:00
raus.

Laut Wiki (https://wiki.fhem.de/wiki/FTUI_Widget_Label#Hinweise) hat das Reading auch das falsche Format.
ZitatEingangsformat: YYYY-MM-DD HH:MI:SS oder DD.MM.YYYY

Wie kann ich nun das Zielformat DD.MM. HH:MM (07.08. 21:50) mittels data-substitution erreichen?
Oder gibt es eine noch nicht dokumentierte Funktion?

Danke für Ideen vorab. :)

EDIT 2020-03-16: ich hab das jetzt anders gelöst, falls es jemand gebrauchen kann, ich arbeite nun mit data-substitution="toString().substr(11,5)", dies liefert immerhin die Uhrzeit.
Titel: Antw:Fehler mit data-substitution="toDate()"?
Beitrag von: ambiman am 06 Februar 2023, 22:20:51
Zitat von: Mundus am 12 April 2017, 22:47:03
Bei mir aktualisiert die Funktion toDate() -genutzt in einem Swipe- nur den ersten Datumswert und scheint, bei einem Swipe-Wechsel, keine neue Substitution durchzuführenn.

Hallo zusammen,

ich bin gerade über das gleiche Problem gestoßen.
In einem Swiper wir tatsächlich nur der Wert (hier: fc0_date) in der ersten "Kachel" ersetzt. In den weiteren Kacheln (bspw. fc1_date) bleibt dann der Wert aus der ersten "Kachel" (fc0_date) bestehen.

Hier mal ein Beispiel:


<div data-type="swiper">
    <ul>
        <li>
            <div class="sheet">
                     <div class="row">
                             <div data-type="label" data-device="Wetter_DWD" data-get="fc0_date" class="cell" data-substitution="toDate().format('eeee, DD.MM.YYYY')"></div>
                     </div>
</div>

</li>
        <li>
            <div class="sheet">
                     <div class="row">
                             <div data-type="label" data-device="Wetter_DWD" data-get="fc1_date" class="cell" data-substitution="toDate().format('eeee, DD.MM.YYYY')"></div>
                     </div>
</div>

</li>
</ul>
</div>



VG,
ambiman