Code-Beispiel
Wochentag selbst berechnen
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
Freeware (proprietär) | ![]() | ![]() |
Ich benötigte zum Aufbau meiner Digitaluhr, den Wochentag und den Monat in Textform.
Zwar läßt sich beides auch mit einer FREE-BASIC Formel erreichen, aber ich wollte den
Wochentag durch eine Function selbst errechnen lassen:
REM (p) Sundboy60 - lauffaehiges DEMO
REM Modul zum berechnen des Wochentages,
REM zum Einbinden in ein vorhandenes Programm.
'' ----- Nur bei Textausgabe von Wochentag und/oder Monat -------
Wochentage: '' Wochentage_Text
DATA "Montag", "Dienstag", "Mittwoch", "Donnerstag", _
"Freitag", "Samstag", "Sonntag"
DIM AS STRING WT(1 TO 7) : RESTORE Wochentage
FOR I AS INTEGER = 1 TO 7 STEP 1 : READ WT(I) : NEXT I
Monate: '' Monate_Text
DATA "Januar", "Februar", !"M\132rz", "April", "Mai", _
"Juni", "Juli", "August", "September", _
"Oktober", "November", "Dezember"
DIM AS STRING MT(1 TO 12) : RESTORE Monate
FOR I AS INTEGER = 1 TO 12 STEP 1 : READ MT(I) : NEXT I
'' ----- Funktion deklarieren! ----------------------------------
DECLARE FUNCTION WertWochentag (Tag AS INTEGER, _
Monat AS INTEGER, Jahr AS INTEGER) AS INTEGER
DIM AS INTEGER WZ '' Wochentag_Zahl
'' ----- naechste Zeile, damit DEMO lauffaehig wird -------------
DIM AS INTEGER Tag = 22, Monat = 3, Jahr = 2020
'' Mit gueltigen Eingaben von Tag, Monat
'' und Jahr (vierstellig, ab 1583 -> Kalenderreform!)
'' gibt WZ den Wochentag zurueck. Mo. = 1 bis So. = 7
'' ----- Funktion im Programm wie folgt einbinden ---------------
WZ = WertWochentag (Tag, Monat, Jahr) '' Werte eingeben!
'' ----- naechste Zeile zur Test-Anzeige in Textform ------------
PRINT : PRINT " Der Wochentag vom " & Tag & ". " _
& MT(Monat) & " " & Jahr _
& " ist ein " & WT(WZ) &"."
GETKEY : END '' Programmende
'' Funktion in den Bereich der SUB/FUNCTIONEN einbinden
FUNCTION WertWochentag (T AS INTEGER, M AS INTEGER, _
J AS INTEGER) AS INTEGER
DIM AS INTEGER U, V, W, R = 0, S = 3 '' Variablen
IF J \ 4 = J / 4 THEN S - = 1 '' alle 4 Jahre
IF J \ 100 = J / 100 THEN S + = 1 '' alle 100 Jahre
IF J \ 400 = J / 400 THEN S - = 1 '' alle 400 Jahre
FOR I AS INTEGER = 1 TO M STEP 1 '' bis Monate
V = FIX(30.6 * (I + 2)) - 60 '' Gesamttage
IF I - 1 THEN V - = S '' Korrektur I > 1
U = V - R : R = V '' max. Tage Monat
NEXT I : T = V - U + T '' ges. Tage Jahr
J - = 1 : R = J \ 4 - J \ 100 + J \ 400 + J * 365
RETURN ((T + R - 577809) MOD 7) + 1 '' Mo. = 1, So. = 7
END FUNCTION
'' Wenn die FUNKTION als SUB umgewandelt wird, lassen sich damit
'' auch Schaltjahr und die maximalen Tage eines Monat's errechnen!
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|