NEWS
Sommerzeit/Winterzeit in Script abfragen…
-
Liebe Leute,
die CCU kennt ja, bzw. hat ja die Funktion DST true oder false…(über die Time Funktionen)
...gibt es das in ioBroker/javascript auch irgendwo?
Im Prinzip kann man es ja auch über ein Programm machen, aber wie programmiere ich den letzten Sonntag im März und im Oktober?
Grüße
etv
-
Hallo,
das ist eine schöne Aufgabe. Ich bin leider unterwegs und kriege das nicht sofort in Javascript hin.
Ich würde so vorgehen:
eine Variable sommerzeit mit setTime() anlegen und sie mit dem 31. März des aktuellen Jahres befüllen ( setMonth(2) und setDate(31) setFullYear(aktuellesJahr) ).
In einer Schleife solange einen Tag abziehen, bis getDay() 0 ergibt (also Sonntag).
Analog dazu eine Variable winterzeit für den 31. Oktober ( setMonth(9) und setDate(31) ) anlegen und bis zum Sonntag zurückgehen.
Dann prüfen, ob das aktuelle Datum vor dem Datum winterzeit und nach dem Datum sommerzeit liegt.
Wenn ja, dann ist Sommerzeit, wenn nicht ist Winterzeit.
Ich glaube, das passt noch in meinen geplanten iobroker.dateinfo Adapter

Gruß
Pix
-
….wow, das wäre der Hammer wenn ioBrocker die Funktion erhält!!
Bei uns wechselt nämlich die Müllsammelzentrum Zeit im Sommer und im Winter, eben mit der Zeitumstellung und nachdem ich mir die Infos mit VIS anzeigen lasse, wäre es cool wenn ich das automatisch wechseln lassen könnte. Derzeit stell ich selbst eine Variable auf der CCU händisch um.
Grüße
etv
-
@etv:Im Prinzip kann man es ja auch über ein Programm machen, aber wie programmiere ich den letzten Sonntag im März und im Oktober?
Dafür gibt es ein [https://www.npmjs.com/package/is-it-bst](https://www.npmjs.com/package/is-it-bst).
…OK, danke! Wenn ich das installiere kann ich dann die Abfragen in ioBrocker genau so machen wie im Beispiel auf der Seite?Dann müsste das Script nur ein paar Tage pro Jahr laufen - eben genau in der Zeit in der die Umstellung zu erwarten ist und wenn sich der Status ändert, dann kann ich meine DST Variable umstellen.
Grüße
Tom
-
@etv:Wenn ich das installiere kann ich dann die Abfragen in ioBrocker genau so machen wie im Beispiel auf der Seite? `
Ja.
@etv:Dann müsste das Script nur ein paar Tage pro Jahr laufen - eben genau in der Zeit in der die Umstellung zu erwarten ist und wenn sich der Status ändert, dann kann ich meine DST Variable umstellen. `
Das simple Script zum Setzen des State eines Datenpunktes kann auch täglich einmal (z.B. um 4:00 Uhr) laufen. -
@pix:Um 4Uhr, jeden Sonntag zwischen 24. und 31. März/Oktober `
Ja, das Script kann dann so aussehen:// Sommerzeit ermitteln var dst = require('is-it-bst'); setState("Sommerzeit", dst()); // Script start schedule("0 4 24-31 3,10 7", function() { setState("Sommerzeit", dst()); }); -
Der Thread ist schon einige Jahre alt. Ist dies noch immer die empfohlene Lösung, um herauszubekommen, ob Sommer- oder Winterzeit?
-
Der Thread ist schon einige Jahre alt. Ist dies noch immer die empfohlene Lösung, um herauszubekommen, ob Sommer- oder Winterzeit?
@klassisch sagte in Sommerzeit/Winterzeit in Script abfragen…:
Der Thread ist schon einige Jahre alt. Ist dies noch immer die empfohlene Lösung, um herauszubekommen, ob Sommer- oder Winterzeit?
Was empfohlen wird weiß ich nicht, aber für unsere Region sollte es das auch tun
let DST = new Date().toString().indexOf('GMT+02') >= 0; -
@klassisch sagte in Sommerzeit/Winterzeit in Script abfragen…:
Der Thread ist schon einige Jahre alt. Ist dies noch immer die empfohlene Lösung, um herauszubekommen, ob Sommer- oder Winterzeit?
Was empfohlen wird weiß ich nicht, aber für unsere Region sollte es das auch tun
let DST = new Date().toString().indexOf('GMT+02') >= 0;@fastfoot Vielen Dank! Funktioniert hier und sieht superelegant aus. Eine Zeile mit 2 Gleichheitszeichen. Was es alles gibt.
Die Syntax habe ich nicht verstanden.
Die Semantik zielt wohl darauf ab, wie weit wir von GMT bzw. UTC entfernt sind.
So ein ähnlicher Ansatz wie mit "getTimeZoneOffset". Nur eben so elegant zusammengefaßt, daß gleich ein Bool rauskommt. -
@fastfoot Vielen Dank! Funktioniert hier und sieht superelegant aus. Eine Zeile mit 2 Gleichheitszeichen. Was es alles gibt.
Die Syntax habe ich nicht verstanden.
Die Semantik zielt wohl darauf ab, wie weit wir von GMT bzw. UTC entfernt sind.
So ein ähnlicher Ansatz wie mit "getTimeZoneOffset". Nur eben so elegant zusammengefaßt, daß gleich ein Bool rauskommt.@klassisch sagte in Sommerzeit/Winterzeit in Script abfragen…:
@fastfoot Vielen Dank! Funktioniert hier und sieht superelegant aus. Eine Zeile mit 2 Gleichheitszeichen. Was es alles gibt.
Die Syntax habe ich nicht verstanden.
Die Semantik zielt wohl darauf ab, wie weit wir von GMT bzw. UTC entfernt sind.
So ein ähnlicher Ansatz wie mit "getTimeZoneOffset". Nur eben so elegant zusammengefaßt, daß gleich ein Bool rauskommt.Das erste = ist die Zuweisung zu DST, das >= ist ein Vergleich
-
new Date() liefert die jetzt Zeit als
Sun Nov 01 2020 16:52:38 GMT+0100 (Mitteleuropäische Normalzeit), ist aber ein Objekt, weshalb es mit -
toString() in einen String gewandelt wird, den man dann mit
-
indexOf(Suchwert) nach der Position des Offset(GMT+01) durchsuchen kann
-
>= 0 liefert true/false je nachdem ob der Wert gefunden wurde
-
-
@klassisch sagte in Sommerzeit/Winterzeit in Script abfragen…:
@fastfoot Vielen Dank! Funktioniert hier und sieht superelegant aus. Eine Zeile mit 2 Gleichheitszeichen. Was es alles gibt.
Die Syntax habe ich nicht verstanden.
Die Semantik zielt wohl darauf ab, wie weit wir von GMT bzw. UTC entfernt sind.
So ein ähnlicher Ansatz wie mit "getTimeZoneOffset". Nur eben so elegant zusammengefaßt, daß gleich ein Bool rauskommt.Das erste = ist die Zuweisung zu DST, das >= ist ein Vergleich
-
new Date() liefert die jetzt Zeit als
Sun Nov 01 2020 16:52:38 GMT+0100 (Mitteleuropäische Normalzeit), ist aber ein Objekt, weshalb es mit -
toString() in einen String gewandelt wird, den man dann mit
-
indexOf(Suchwert) nach der Position des Offset(GMT+01) durchsuchen kann
-
>= 0 liefert true/false je nachdem ob der Wert gefunden wurde
-
-
Ich wollte auch nochmal Nachfragen gibt es ein fertiges Script egal ob Java oder Blockly. Wo ein Datenpunkt von false auf true sich ändert sobald Sommer oder Winterzeit ist.
Danke -
Ich wollte auch nochmal Nachfragen gibt es ein fertiges Script egal ob Java oder Blockly. Wo ein Datenpunkt von false auf true sich ändert sobald Sommer oder Winterzeit ist.
Danke -
@basti97 sagte: Datenpunkt von false auf true sich ändert sobald Sommerzeit
schedule('1 3 * * 7', function() { setState(idSommer, new Date().getTimezoneOffset() == -120, true); // MESZ }); -
@paul53 Ich komme nochmal auf das Script zurück. Kann ich auch den Name des Datenpunktes ändern?
-
@basti97 sagte: Kann ich auch den Name des Datenpunktes ändern?
Ja. Beispiel:
const idSommer = '0_userdata.0.Zeiten.Sommerzeit'; schedule('1 3 * * 7', function() { setState(idSommer, new Date().getTimezoneOffset() == -120, true); // MESZ });
