NEWS
Wert aus Datenpunkt in hh:mm:ss umrechnen (gelöst)
-
@matt77che sagte in Wert aus Datenpunkt in hh:mm:ss umrechnen....:
wieso spielt die Zeitzone in diesem Fall eine Rolle?
Die Zeitzone spielt dann eine Rolle, wenn Du irgendeine Funktion benutzt, welche die Zeitzone mit einberechnen will. Wenn man einen Timestamp nimmt, ist der immer UTC. Wenn man daraus einen String macht, dann als UTC, da sonst die aktuelle Zeitzone berücksichtigt wird.
new Date(300000).toISOString() // "1970-01-01T00:05:00.000Z"
während
new Date(300000).toLocaleString() // "01/01/1970, 01:05:00"
weil Date so schlau ist, deine aktuelle Zeitzone (vom System) zu kennen:
new Date(300000).getTimezoneOffset() // -60
Der gleiche Zeitpunkt, ist in anderen Zeitzonen nunmal eine andere Uhrzeit.
new Date(300000).toLocaleString('de-DE', { timeZone: 'America/Los_Angeles'}) // "31.12.1969, 16:05:00" new Date(300000).toLocaleString('de-DE', { timeZone: 'Europe/Berlin'}) // "1.1.1970, 01:05:00"
Daher in dem Fall immer mit den Funktionen arbeiten, welche die Zeitzone ignorieren.
.getUTCDate() .getUTCDay() .getUTCFullYear() .getUTCHours() .getUTCMinutes() .getUTCSeconds() ...
-
gelöscht
-
@matt77che sagte: Sind in einer anderen Zeitzone 300000ms nicht 5s?!?
Nein. 300000 ms entsprechen 01.01.1970 00:05:00 UTC. Die Blockly-Formatierung rechnet in die lokale Uhrzeit am 01.01.1970 um (+ 1h MEZ).
Die JS-Controller-Funktion formatDate(ms, format) rechnet bis zu gut 10 Tagen nicht in die Lokalzeit um, ist also auch für Zeit-Differenzen geeignet. -
Aha - Ok; vielen Dank für die Erläuterungen
-
Aalso, hab mich mal hingesetzt um das ganze mit einem Javascript zu versuchen.....
ich scheitere noch..
wie muss ich das anstellen, dass ein Datenpunkt (unter Objekte / 0_userdata) ausgelesen (zB diese 300000ms), dann umgerechnet werden, dass 00:05:00 ausgeben und dies wieder in ein Datenpunkt (wieder unter Objekte / 0_userdata) reingeschrieben wird? - Mir raucht echt schon der Kopf davon...
-
@matt77che sagte: Datenpunkt (unter Objekte / 0_userdata) ausgelesen (zB diese 300000ms), dann umgerechnet werden, dass 00:05:00 ausgeben und dies wieder in ein Datenpunkt (wieder unter Objekte / 0_userdata) reingeschrieben wird?
Inhalt der Funktion formatDiff(ms, format):
return formatDate(ms, format);
Wert (unter "Trigger"):
Der Wert im Trigger-Datenpunkt muss sich erst ändern, damit getriggert wird!
-
@paul53
habe es nachgebaut - und es tut genau das was ich möchteVielen herzlichen Dank für deine Geduld und deinen Rat - resp. Anleitung!
-
-
@steffe-s Der Thread ist ja schon uralt. In der Zwischenzeit gibt es dafür einen Standard-Block:
Siehe auch https://www.youtube.com/watch?v=sxkz3O6nfFQ
-
wie Dank für die Rückmeldung, das schaue ich mir gleichmal an
Das Problem sitzt vor dem Computer, der "Zeitdifferenz formatieren Baustein im Blockly" funktioniert super,
danke, für Deine Hilfe, wieder einmal @haus-automatisierung