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
Du hast aber class="timestamp"
Damit wird der Zeitstempel angezeigt und nicht der Wert.
die zeit paasr aber grob und ohne class timestamp hatte ich es auch probiert ubd da wurden dann ganz wilde zeiten angezeigt...
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.
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...
Dann muss ich das in toDate reinbauen. Wenn alles Zahlen bestimmter Größe, dann von unixtimestamp zu js Datum
das wäre super.
was hattest du denn als input für das toDate() angenommen, wenn es nicht unix timestamp war?
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 :-)
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)
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
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,
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
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) :
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.
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