NEWS
Problem mit getAstroDate - Fehler in suncalc?
-
Ich habe gerade ein Problem bei der Berechnung der Astro-Zeitpunkte festgestellt.
IMHO wird die Referenzzeit, die übergeben wird als UTC behandelt und nicht als lokale Zeit.
Entsprechend wird bei einer Referenzzeit vor (zur Zeit) 1:00h der Astrozeitpunkt (hier: dawn, also Beginn der bürgerlichen Dämmerung) für den Vortag berechnet.
Kurzes Testprogramm:
var now = new Date ("2017-11-25 00:05"); var utctest = new Date ("2017-11-25 01:00"); var today = new Date ("2017-11-25 12:00"); var dawn1 = getAstroDate("dawn",now); var dawnutc = getAstroDate ("dawn",utctest); var dawn2 = getAstroDate("dawn",today); log(formatDate(dawn1,"DD.MM hh:mm")); log(formatDate(dawnutc,"DD.MM hh:mm")); log(formatDate(dawn2,"DD.MM hh:mm"));
Ich berechne also den Beginn der bürgerlichen Dämmerung am 25.11. mit den Referenzzeiten 00:05, 01:00 und 12:00.
Erwarten würde ich bei allen dreien das gleiche Ergebnis. Das ist aber nicht so.
09:17:48.991 [info] javascript.0 script.js.Steuerung.testzeugs: 24.11 06:59 09:17:48.991 [info] javascript.0 script.js.Steuerung.testzeugs: 25.11 07:00 09:17:48.991 [info] javascript.0 script.js.Steuerung.testzeugs: 25.11 07:00
Bei der Referenzzeit 00:05 wird also der Zeitpunkt des VORTAGs berechnet.
Nun möchte ich aber um 00:05 den Offset bis zur bürgerlichen Dämmerung berechnen (der dann negativ wird :().
Ich hab dann probiert, das mit dem "suncalc" Modul direkt zu machen (require("suncalc") etc…) - gleicher Effekt, also liegt da wohl der Hund begraben.
===
Ergänzung:
Beim suncalc modul ist auf github dazu auch ein Issue erfasst:
https://github.com/mourner/suncalc/issues/107
===
Workaround:
var now = new Date ("2017-11-25 00:05"); var reftime = new Date(now); reftime.setHours(12,0,0,0); var dawn1 = getAstroDate("dawn",now); var dawn2 = getAstroDate ("dawn",reftime); log(formatDate(dawn1,"DD.MM hh:mm")); log(formatDate(dawn2,"DD.MM hh:mm"));
also Zeit kopieren und "gnadenlos" auf Mittag stellen …
Vielleicht sparts mal jemand die Fehlersuche
CU
Werner