Buchempfehlung
MySQL kurz & gut
MySQL kurz & gut
Das preiswerte Taschen- buch stellt MySQL-rele- vante Inhalte systematisch und knapp dar, sodass es sich optimal zum Nach- schlagen beim Pro- grammieren eignet. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Sonstiges

Wochentag selbst berechnen

Lizenz:Erster Autor:Letzte Bearbeitung:
Freeware (proprietär)MitgliedSundboy60 22.03.2020

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
  • Das Code-Beispiel wurde am 22.03.2020 von MitgliedSundboy60 angelegt.
  • Die aktuellste Version wurde am 22.03.2020 von MitgliedSundboy60 gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen