Hi, im Anhang der C Code zur Ermittlung des Wochentages und der Kalenderwoche. Der Algorithmus hält sich an den Gregorianische Kalender der ende des 16 Jahrhunderts entwickelt wurde: Schaltjahr alle 4 Jahre Alle 100 Jahre keins Alle 400 Jahre eins Zykluszeit 400 Jahre. http://de.wikipedia.org/wiki/Wochentagsberechnung Für das Jahr steht ein 13Bit Wert zur Berechnung des JAhres 0000-7999 zur verfügung, in der Software die diese Dateien nutzt, könnte man mit einem Offset von 2000 Jahren arbeiten. Kalenderwoche nach DIN 1355 / ISO 8601 http://de.wikipedia.org/wiki/Woche der erste Tag der K-Woche ist der Montag der 4.1. eines Jahres liegt immer in der ersten KW maximal 3 tage der 53igsten KW liegen im Folgejahr Im Zip ist ein File mit der Lage der Kalenderwoche bezogen auf den 28Jahr Rythmus. Die Verschiebungen die durch das Fehlende Schaltjahr im Jahrtausend entstehen werden mit berücksichtigt (Problemjahr %400 ->101) Die Werte werden absolut berechnet, d.h die Daten werden aus der JAhresinformation errechnet, es wird nicht von Punkt X losgerechnet, und auch nicht ein JAhr X berechnet um die Rechnungen zu stützen. Nur innerhalb des JAhres werden ein paar Stützpunkte genommen um Code zu sparen. Für die Wochentage gilt: 0=MO .... 6=SO Viel Spass damit, Whitenoise
..sie sind entstanden beim Bau meines aktuellen Projektes (LED Matrix Kalender mit 3 Farben) Im Anhang ein Bild der Simulation des gesamten Displays auf dem Rechner. Gruß, whitenoise
Mit Verlaub, das geht viel einfacher, mit dem Zeller-Algorithmus. Die Berechnung braucht keine 10 Zeilen Code und keine Tabellen. Auf die Schnelle ergoogelt: http://c-buch.sommergut.de/Kapitel10/Verwendung-von-R%FCckgabewerten-und-Prototypen.shtml Jörg
Hallo Jörg, ja, mit dem Zeller Algorithmus habe ich auch rumprobiert, ich hatte im Bereich März April manchmal Probleme mit dem Ergebnis, und da ich diese Lösung schon hatte, habe ich sie bevorzugt. Bei dem Zeller Algoritmus werden der Januar und der Februar des Jahres als 13 und 14 Monat das letzten Jahres gerechnet, wer spass daran hat, kann diesen auch hier einsetzen. Was der Algorithmus nicht mitbringt ist die Berechnung der Kalenderwoche, welche hier auch enthalten ist. Was wolltest du mir mit deinem Link sagen? Gruß, Whitenoise
Hier noch ein paar Varianten:
1 | /***********************************************************************
|
2 | |
3 | Day of Week:
|
4 | |
5 | The result is an integer in the range 0-6,
|
6 | where 0=Monday and 6=Sunday (for the Zeller formular)
|
7 | |
8 | Reference:
|
9 | - Chr. Zeller;
|
10 | Kalender-Formeln, Acta Mathematica, 9 (1887) 131-136
|
11 | |
12 | - The Day of the Week for Gregorian Calendars (A. D. Bradley) ?? 82-87
|
13 | |
14 | - A. Grassl;
|
15 | Kalenderrechnung: Wochentage im laufenden Jahr.
|
16 | (Calendar calculations: Days of the week in a year.)
|
17 | MNU. Der Mathematische und Naturwissenschaftliche Unterricht.
|
18 | (Apr 1997) v. 50(3) p. 150-151.
|
19 | |
20 | - Keith & Craver;
|
21 | The ultimate perpetual calendar?, JoRM 22:4 (1990) 280-282
|
22 | day of the week as a 44 character expression in C. (illegal use of --)
|
23 | The following 45 character C expression by Keith is correct.
|
24 | dow(y,m,d) { return (d+=m<3?y--:y-2,23*m/9+d+4+y/4-y/100+y/400)%7; }
|
25 | |
26 | - M. Oswalden;
|
27 | Wochentag und Osterdatum - im Kopf gerechnet.
|
28 | T. 1. Gregorianischer Kalender (ab 15. Okt. 1582)
|
29 | T. 2. Julianischer Kalender.
|
30 | Wiss. Nachr. (Jan 1990) (no.82) p. 41-44
|
31 | Wiss. Nachr. (Apr 1990) (no.83) p. 40-42.
|
32 | ZblD 1992h.00756 + 1992h.00760
|
33 | |
34 | - A. W. Butkewitsch, M. S. Selikson;
|
35 | Ewige Kalender, Teubner (Leipzig) 1974
|
36 | Kleine Naturwissenschaftliche Bibliothek, Bd. 23, p98-113
|
37 | |
38 | - Heinz Bachmann;
|
39 | Kalenderarithmetik, 2nd Ed.,
|
40 | Juris Verlag, Z"urich, 1984, ISBN 3-260-05035-0, p26-42
|
41 | -----------------------------------------------------------------------
|
42 | mailto:Torsten.Sillke@uni-bielefeld.de 1999-03-15
|
43 | ***********************************************************************/
|
44 | |
45 | #include <stdint.h> |
46 | #include <stdio.h> |
47 | |
48 | int dayofweek(uint8_t day, uint8_t month, uint16_t year) |
49 | {
|
50 | /** Zeller's congruence for the Gregorian calendar. **/
|
51 | /** With 0=Monday, ... 5=Saturday, 6=Sunday **/
|
52 | if (month < 3) { |
53 | month += 12; |
54 | year--; |
55 | }
|
56 | return ((13*month+3)/5 + day + year + year/4 - year/100 + year/400) % 7; |
57 | }
|
58 | |
59 | |
60 | int dayofweek0(int d, int m, int y) |
61 | {
|
62 | /** a 45 character C expression by Keith **/
|
63 | /** With 0=Sunday, 1=Monday, ... 6=Saturday **/
|
64 | return (d+=m<3?y--:y-2,23*m/9+d+4+y/4-y/100+y/400)%7; |
65 | }
|
66 | |
67 | |
68 | int dayofweek1(int day, int month, int year) |
69 | {
|
70 | /** Variation of Sillke for the Gregorian calendar. **/
|
71 | /** With 0=Sunday, 1=Monday, ... 6=Saturday **/
|
72 | if ((month -= 2) <= 0) { |
73 | month += 12; |
74 | year--; |
75 | }
|
76 | return (83*month/32 + day + year + year/4 - year/100 + year/400) % 7; |
77 | }
|
DAS amüsiert mich am meisten "Kalenderwoche nach DIN 1355 / ISO 8601" es befassen sich wirklich leute damit sowas nach DIN zu formen .. wo es doch weitaus andere problemchen in der welt gibt :( ich bin glaube auf dem falschen planeten sry for OT
Na ja, jedefalls Besser als Bananen und Gurken zu normieren! Auch Sorry, aber den Frust über unsere EU-Bürokraten muss man ab und zu mal loswerden. (Und unsere Volks(ver)treter segnen diesen Hirnsch... ähh -malz auch noch ab. Kopfschüttel!)
Werner B. schrieb: > Na ja, jedefalls Besser als Bananen und Gurken zu normieren! > > Auch Sorry, aber den Frust über unsere EU-Bürokraten muss man ab und zu > mal loswerden. (Und unsere Volks(ver)treter segnen diesen Hirnsch... ähh > -malz auch noch ab. Kopfschüttel!) Bei den Gurken war es nur leider genau andersrum, Deutschland hatte das von der EU gefordert. Es ist leider bei den EU-Mitgliedern ueblich, die EU-Vorteile als nationale Erfolge zu verkaufen und nationale Probleme als EU-Nachteile zu deklarieren. Wie gut das funktioniert und was dabei rauskommt, hat man schoen bei Irland gesehen.
Wie funktioniert denn der Simulator?
Hallo, ist eine windows app, sie lädt an die richtige Stelle im Fenster die passenden bmp Bilder (Foto Ausschnitt der originalhardware) in abhängigkeit eines Speichers, der ist genauso organisiert wie auf dem Atmega in der Originalhardware, so kann ich vieles auf dem Rechner entwickeln und ansehen und später nur ins Studio kopieren. Gruß, w.
so siehts auf dem display aus. nur um mal einen vergleich zu zeigen. gruß, w.
whitenoise schrieb: > so siehts auf dem display aus. > > nur um mal einen vergleich zu zeigen. Hm, im Simulator spiegelt's aber weniger ;) Im Ernst: Sieht toll aus! Das hattest du auch in den Kunstwerken schonmal gepostet, oder?
Das Gerät sieht super aus! Wie viel Strom zieht denn das? Das ist bestimmt nicht wenig. Darf man da mal den Schaltplan sehen? Bei dem Gerät würde ich mir noch vier Tasten wünschen: Voriger/nächster Monat Voriges/nächstes Jahr. Die könnte man neben der Monats- und Jahranzeige anbringen. Armin
@ White Noise (whitenoise) Was ist das für ein Display? Oder ist das einfach ne Matrix aus abermillionen von LEDs ?
...ja habe ich dort schonmal gepostet, wollte immer noch einen eigenen thread für dies ding aufmachen, aber dafür ist es noch nicht weit genug fortgeschritten. Schaltplan ist noch in arbeit. Das ding soll mit IR Fernbedienung und einem joystick lokal am display bedienbar werden. Die Funktion (Blättern) gibts schon, das ist das geringste problem. Das sind Matrixmodule von Samsung (SLM1606M). Stromaufnahme pro Modul knapp 2A bei voller ausleuchtung (20 sind verbaut). Momentan habe ich aber nur ein 4A Steckernetzteil angeschlossen, bei den paar strichen geht es noch gerade so. Insgesamt sind es etwas mehr als 10000 LEDs. Gruß, Whitenoise
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.