Seite 1 von 2

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

Verfasst: 14.01.2016, 21:40
von BadenPower
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?


.

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

Verfasst: 15.01.2016, 10:22
von alchy
Kann das grad nicht ausprobieren, aber das sieht ganz danach aus. :shock:
Schon gemeldet?

Alchy

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

Verfasst: 15.01.2016, 23:18
von BadenPower
alchy hat geschrieben:Schon gemeldet?
Nein.

Dumme Frage: Wo?


.

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

Verfasst: 07.04.2017, 12:38
von jmaus
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.

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

Verfasst: 07.04.2017, 13:58
von BadenPower
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]

.

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

Verfasst: 07.04.2017, 14:51
von jmaus
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.

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

Verfasst: 07.04.2017, 15:28
von BadenPower
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<<
.

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

Verfasst: 07.04.2017, 21:27
von jmaus
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

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

Verfasst: 07.04.2017, 22:10
von BadenPower
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.
.

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

Verfasst: 07.04.2017, 23:05
von jmaus
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.