Time.Weekday() - heute ist der 8. Tag der Woche

Fehler in Firmware und WebUI & Workarounds

Moderator: Co-Administratoren

BadenPower

Time.Weekday() - heute ist der 8. Tag der Woche

Beitrag von BadenPower » 14.01.2016, 21:40

und in 3 Tagen ist es der 64. Tag der Woche.

Code: Alles auswählen

string lSysDate  = system.Date("%F %X");
time lDateTime = lSysDate.ToTime();
!time lDateTime = @2016-01-17 18:30:00@;
integer lWeekday = lDateTime.Weekday();

WriteLine(lDateTime.ToString());
WriteLine(lWeekday.ToString());
WriteLine(lDateTime.Format("%w"));
WriteLine(lDateTime.Yearday());
Ausgabe:
2016-01-14 21:35:56
8
4
14

Das sollte doch wohl ein Bug sein?


.

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: Time.Weekday() - heute ist der 8. Tag der Woche

Beitrag von alchy » 15.01.2016, 10:22

Kann das grad nicht ausprobieren, aber das sieht ganz danach aus. :shock:
Schon gemeldet?

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

BadenPower

Re: Time.Weekday() - heute ist der 8. Tag der Woche

Beitrag von BadenPower » 15.01.2016, 23:18

alchy hat geschrieben:Schon gemeldet?
Nein.

Dumme Frage: Wo?


.

Benutzeravatar
jmaus
Beiträge: 9818
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1855 Mal
Kontaktdaten:

Re: Time.Weekday() - heute ist der 8. Tag der Woche

Beitrag von jmaus » 07.04.2017, 12:38

BadenPower hat geschrieben:und in 3 Tagen ist es der 64. Tag der Woche.

Code: Alles auswählen

string lSysDate  = system.Date("%F %X");
time lDateTime = lSysDate.ToTime();
!time lDateTime = @2016-01-17 18:30:00@;
integer lWeekday = lDateTime.Weekday();

WriteLine(lDateTime.ToString());
WriteLine(lWeekday.ToString());
WriteLine(lDateTime.Format("%w"));
WriteLine(lDateTime.Yearday());
Ausgabe:
2016-01-14 21:35:56
8
4
14

Das sollte doch wohl ein Bug sein?
"It's not a bug, it's a feature" :)

time.Weekday() gibt wie folgt die Wochentagwerte zurück:

Code: Alles auswählen

MONDAY = 1
TUESDAY = 2
WEDNESDAY = 4
THURSDAY = 8
FRIDAY = 16
SATURDAY = 32
SUNDAY = 64
D.h. es ist ein bit-array. Ist leider nur nicht in der Skriptdokumentation dokumentiert.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

BadenPower

Re: Time.Weekday() - heute ist der 8. Tag der Woche

Beitrag von BadenPower » 07.04.2017, 13:58

jmaus hat geschrieben:"It's not a bug, it's a feature" :)
Es ist ein Bug.

Die Skriptdoku sagt:
integer time.Weekday(); Ermittelt die Nummer des Wochentags
jmaus hat geschrieben:
BadenPower hat geschrieben:und in 3 Tagen ist es der 64. Tag der Woche.

Code: Alles auswählen

time.Weekday() gibt wie folgt die Wochentagwerte zurück:

[code]
MONDAY = 1
TUESDAY = 2
WEDNESDAY = 4
THURSDAY = 8
FRIDAY = 16
SATURDAY = 32
SUNDAY = 64
D.h. es ist ein bit-array. Ist leider nur nicht in der Skriptdokumentation dokumentiert.
Und genau dies ist der Fehler.

Bei der RegaSkript-Methode .Weekdays() ist diese Art der Ausgabe hingegen richtig, da dort die Tage aufsummiert werden müssen und ein Rückgabewert von 7 eben bedeutet, dass die Einstellung für Montag, Dienstag und Mittwoch gilt.


[EDIT]
Obwohl, wenn ich es mir richtig überlege kann ich das auch als Feature gelten lassen.
So kann man im RegaSkript per einfachem Bitvergleich feststellen, ob ein bestimmter Wochentag in der Zeitmoduleinstellung enthalten ist.
Vielleicht war dies auch das Ansinnen des Programmierers, welcher diese Funktion in dieser Form eingebaut hat.
[/EDIT]

.

Benutzeravatar
jmaus
Beiträge: 9818
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1855 Mal
Kontaktdaten:

Re: Time.Weekday() - heute ist der 8. Tag der Woche

Beitrag von jmaus » 07.04.2017, 14:51

BadenPower hat geschrieben:
jmaus hat geschrieben:"It's not a bug, it's a feature" :)
Es ist ein Bug.
Darüber lässt sich streiten, wie du siehst.
Die Skriptdoku sagt:
integer time.Weekday(); Ermittelt die Nummer des Wochentags
Dort steht aber nicht welcher Wochentag welche "Nummer" sein soll. Auch sieht man in dem Beispiel drüber das dort für den "2008-12-24" als Weekday "4" zurückgegeben wird. Deiner Rechnung nach entspricht das Donnerstag, der 24.12.2008 war aber ein Mittwoch.
BadenPower hat geschrieben:
D.h. es ist ein bit-array. Ist leider nur nicht in der Skriptdokumentation dokumentiert.
Und genau dies ist der Fehler.

Bei der RegaSkript-Methode .Weekdays() ist diese Art der Ausgabe hingegen richtig, da dort die Tage aufsummiert werden müssen und ein Rückgabewert von 7 eben bedeutet, dass die Einstellung für Montag, Dienstag und Mittwoch gilt.
Wo genau liesst du das ab bzw. wo findest du zu dem Weekdays() Dokumentation?
BadenPower hat geschrieben: [EDIT]
Obwohl, wenn ich es mir richtig überlege kann ich das auch als Feature gelten lassen.
So kann man im RegaSkript per einfachem Bitvergleich feststellen, ob ein bestimmter Wochentag in der Zeitmoduleinstellung enthalten ist.
Vielleicht war dies auch das Ansinnen des Programmierers, welcher diese Funktion in dieser Form eingebaut hat.
[/EDIT]
Das kann in der Tat gut sein. Ist eben nur schlecht dokumentiert, würde ich sagen.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

BadenPower

Re: Time.Weekday() - heute ist der 8. Tag der Woche

Beitrag von BadenPower » 07.04.2017, 15:28

jmaus hat geschrieben:wo findest du zu dem Weekdays() Dokumentation?
Dort wo auch die Dokumentation zu den über 500 anderen RegaSkript-Methoden steht. :mrgreen:

>>hier<<
.

Benutzeravatar
jmaus
Beiträge: 9818
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1855 Mal
Kontaktdaten:

Re: Time.Weekday() - heute ist der 8. Tag der Woche

Beitrag von jmaus » 07.04.2017, 21:27

BadenPower hat geschrieben:
jmaus hat geschrieben:wo findest du zu dem Weekdays() Dokumentation?
Dort wo auch die Dokumentation zu den über 500 anderen RegaSkript-Methoden steht. :mrgreen:

>>hier<<
.
Du magst vielleicht deine Aussagen nicht so gerne komplett ausführen. Aber ich frage nicht aus Faulheit sondern weil ich eben in keiner der eq-3 Dokumente zur Skriptprogrammierung etwas zu "Weekdays()" gefunden habe. Bitte also etwas mehr ins Detail gehen
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

BadenPower

Re: Time.Weekday() - heute ist der 8. Tag der Woche

Beitrag von BadenPower » 07.04.2017, 22:10

jmaus hat geschrieben:Du magst vielleicht deine Aussagen nicht so gerne komplett ausführen.
Das hat schon seine Gründe, vor allem dann, wenn ich keine Kenntniss davon habe für was das mein Wissen denn benötigt wird.

Auf die Schnelle mal nur ein Beispiel von vielen, wie es mir gedankt wird, wenn ich Nicht-Otto-Normal-Usern helfe und dann die Verwendung undokumentierter Methoden preisgebe/erkläre.
viewtopic.php?f=37&t=32167

Aber hab noch etwas Gedult. Die Methode .Weekdays() wird in einer späteren Version des HM-Investigators auch verwendet und erklärt sich dann dort im ausgegebenen SkriptCode von selbst.
.

Benutzeravatar
jmaus
Beiträge: 9818
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1855 Mal
Kontaktdaten:

Re: Time.Weekday() - heute ist der 8. Tag der Woche

Beitrag von jmaus » 07.04.2017, 23:05

BadenPower hat geschrieben:
jmaus hat geschrieben:Du magst vielleicht deine Aussagen nicht so gerne komplett ausführen.
Das hat schon seine Gründe, vor allem dann, wenn ich keine Kenntniss davon habe für was das mein Wissen denn benötigt wird.
Nun, die Einstellung ist leider mehr als traurig und ehrlich verstehe ich dann eigentlich auch nicht warum du dich dann überhaupt noch an diesem Forum hier beteiligst wenn du eh nicht gewillt bist dich mehr zu erklären.
Auf die Schnelle mal nur ein Beispiel von vielen, wie es mir gedankt wird, wenn ich Nicht-Otto-Normal-Usern helfe und dann die Verwendung undokumentierter Methoden preisgebe/erkläre.
viewtopic.php?f=37&t=32167
Also nachdem ich diesen Thread aufmerksam durchgelesen/durchgearbeitet habe muss ich leider sagen das ich dich noch weniger als vorher verstehe. Uwe hat dir dort mit bestem Wissen und Gewissen Informationen zur Verfügung gestellt und du ziehst über ihn in einer selbstgefälligen Art her die dich leider in einem sehr schlechten Licht erscheinen lassen, gerade auch weil uwe bekanntermaßen sehr offen für alles ist und eine gute reputation besitzt. Du solltest vielleicht mal ein gesundes Maß an Selbstreflextion an den Tag legen, denn deine Art zu argumentieren/diskutieren und dich hier einzubringen stellt leider momentan keine Bereicherung für dieses Forum dar.
Aber hab noch etwas Gedult. Die Methode .Weekdays() wird in einer späteren Version des HM-Investigators auch verwendet und erklärt sich dann dort im ausgegebenen SkriptCode von selbst.
Du kannst mir glauben, dass ich die Weekdays() Methode bei weitem besser kenne als du vielleicht denkst. Trotzdem interessiert mich woher du diese Information hast - gerade auch weil du angeblich Skriptdokumentation heranziehst in der aber definitiv dazu nichts zu finden ist. Und du solltest auch bedenken das Funktionen die nicht dokumentiert sind de facto interne Funktionen sind die für eine externe Nutzung nicht vorgesehen sind. Und leider hab ich an deinem HM-Investigator schon deshalb kein Interesse weil es augenscheinlich ein Windows Programm ist und ich Windows nicht mein Eigen nenne.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Antworten

Zurück zu „HomeMatic - bekannte Bugs“