Anzeige der Arbeitsstunden imjahr Monat und co. + Schaltjahr

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

WEBLink

Betreff: Anzeige der Arbeitsstunden imjahr Monat und co. + Schaltjahr

BeitragMi, März 23, 2005 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,

ich möchte die arbeitstage in einem Jahr bzw. Monat ausgeben. Auch mit schaltjahr und co.

Auch an sich den Tag der grad ist Sam, SOn Mo ....

Wie kann ich das am besten bewerkstelligen
 

Timo

BeitragMi, März 23, 2005 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi! Hier mal ein Wochentags - Programm von mir, was ich früher mal gecoded hatte. Es gibt für ein Datum immer den richtigen Wochentag an. Probier es einfach mal aus. Die Rechnung, um auch in Schaltjahren den richtigen Wochentag zu haben ist nicht von mir Wink

BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,16,2
SetBuffer BackBuffer()

.wh

Print \"Bitte gebe das Datum im Format TT.MM.JJJJ ein! Danke\"
Datum$ = Input(\"Datum: \")

dot1 = Instr(Datum$,\".\")
dot2 = Instr(Datum$,\".\",dot1+1)
t = Mid$(Datum$,1,dot1-1)
m = Mid$(Datum$,dot1+1,dot2-1)
jh = Mid$(Datum$,dot2+1,-1)

j = jh Mod 100
jh = Int ( jh / 100 )


If m < 3 Then
m = m + 12
If j = 0 Then
j = 99
If jh = 0 Then jh = 0 Else jh = jh - 1
Else
j = j - 1
EndIf
EndIf


wt = t + Int((m + 1) * 26 / 10 )
wt = wt + Int(5 * j / 4) + Int( jh / 4 )
wt = wt - ( 2 * Jh ) - 1
wt = wt Mod 7

;If wt < 1 Then wt = wt + 7

Select wt

Case 0
Print \"Der \" + Datum$ + \" ist ein Sonntag\"
Case 1
Print \"Der \" + Datum$ + \" ist ein Montag\"
Case 2
Print \"Der \" + Datum$ + \" ist ein Dienstag\"
Case 3
Print \"Der \" + Datum$ + \" ist ein Mittwoch\"
Case 4
Print \"Der \" + Datum$ + \" ist ein Donnerstag\"
Case 5
Print \"Der \" + Datum$ + \" ist ein Freitag\"
Case 6
Print \"Der \" + Datum$ + \" ist ein Samstag\"
Default
Print wt
End Select

Print \"Nochmal? Drück die 1 \"
Print
Print
Print

FlushKeys

While Not KeyHit(1)
If KeyHit(2) Then FlushKeys : Goto wh
Wend
End
 

Gerhard

BeitragMi, März 23, 2005 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ausgehend von Ostern kann man die meisten beweglichen Feiertage errechnen.

Feiertage wie Ostern fallen nicht auf ein spezielles Datum. Die meisten beweglichen Feiertage haben einen definierten zeitlichen Abstand vom Ostersonntag, nur der in Sachsen noch gültige Buß- und Bettag definiert sich als der Mittwoch vor dem Sonntag vor dem 1. Advent.

Die folgende Übersicht zeigt die Datenzusammenhänge und die Gültigkeit der entsprechenden Feiertage nach Bundesländern aufgeschlüsselt:

Feiertag Datum Gültig in(Abkürzungen: siehe Tabellenende)
Neujahr
Fest:
01.01.
bundesweit

Erscheinungsfest (Hl. Drei Könige)
Fest:
06.01.
BW, BY, ST

Karfreitag
Beweglich:
Ostersonntag - 2 Tage
bundesweit

Ostersonntag
Beweglich:
Gauß-Formel
bundesweit

Ostermontag
Beweglich:
Ostersonntag + 1 Tag
bundesweit

Maifeiertag
Fest:
01.05.
bundesweit

Christi Himmelfahrt
Beweglich:
Ostersonntag + 39 Tage
bundesweit

Pfingstmontag
Beweglich:
Ostersonntag + 50 Tage
bundesweit

Fronleichnam
Beweglich:
Ostersonntag + 60 Tage
BW, BY, HE, NW, RP, SL, SA (in einzelnen Gemeinden), TH (in überwiegend kath. Gemeinden)

Mariä Himmelfahrt
Fest:
15.08.
BY (in einzelnen Gemeinden), SL

Tag der deutschen Einheit
Fest:
03.10.
bundesweit

Reformationstag
Fest:
31.10.
BB, MV, SA, ST, TH

Allerheiligen
Fest:
01.11.
BW, BY, NW, RP, SL

Buß- u. Bettag
Beweglich:
Mittwoch vor dem Sonntag vor dem 1. Advent
SA

Erster Weihnachtsfeiertag
Fest:
25.12.
bundesweit

Zweiter Weihnachtsfeiertag
Fest:
27.12.
bundesweit

Offizielle Abkürzungen der deutschen Bundesländer: BW = Baden-Württemberg, BY = Bayern, BE = Berlin, BB = Brandenburg, HB = Bremen, HH = Hamburg, HE = Hessen, MV = Mecklenburg-Vorpommern, NI = Niedersachsen, NW = Nordrhein-Westfalen, RP = Rheinland-Pfalz, SL = Saarland, SN = Sachsen, ST = Sachen-Anhalt, SH = Schleswig-Holstein, TH = Thüringen


Die Abhängigkeit der beweglichen Feiertage vom Ostersonntag ist vergleichsweise simpel - die Addition eines Intervalls zu einem Datum wird unter Visual Basic mithilfe der Funktion DateAdd vorgenommen. Da jedoch auch der Ostersonntag nicht datumsfest ist, muss zunächst dessen Datum in einem Jahr errechnet werden.
Ostern fällt auf den ersten Sonntag nach dem ersten Frühlingsvollmond. Für Nichtastronomen lässt sich dieser Sonntag glücklicherweise auch nach der so genannten Osterformel von Carl Friedrich Gauß berechnen, die dieser im Jahr 1800 aufstellte. Die folgende Funktion Ostersonntag liefert auf Basis dieser Formel das Datum des Ostersonntags in einem angegebenen Jahr:

Public Function Ostersonntag(Optional ByVal Jahr As Long) As Date
' Osterfunktion nach Carl Friedrich Gauß (1800). Rückgabewert
' ist das Datum des Ostersonntags im angegebenen (ersatzweise:
' aktuellen) Jahr. Gültigkeitsbereich: 1583 - 8702 (auf das
' Auslösen von Laufzeitfehlern bei Unter- oder Überschreitung
' dieses Gültigkeitsbereichs wird hier absichtlich verzichtet).
Dim a As Long, b As Long, c As Long, d As Long, e As Long, f As Long

' Wurde kein Jahr angegeben, wird das aktuelle Jahr verwendet:
If Jahr = 0 Then
Jahr = Year(Now)
End If

' Die "magische" Gauss-Formel anwenden:
a = Jahr Mod 19
b = Jahr \ 100
c = (8 * b + 13) \ 25 - 2
d = b - (Jahr \ 400) - 2
e = (19 * (Jahr Mod 19) + ((15 - c + d) Mod 30)) Mod 30
If e = 28 Then
If a > 10 Then
e = 27
End If
ElseIf e = 29 Then
e = 28
End If
f = (d + 6 * e + 2 * (Jahr Mod 4) + 4 * (Jahr Mod 7) + 6) Mod 7

' Rückgabewert als Datum bereitstellen
Ostersonntag = DateSerial(Jahr, 3, e + f + 22)

End Function

Wäre der "Buß- und Bettag", der im Jahr 1995 in den meisten Bundesländern zwecks Finanzierung der Pflegeversicherung weichen musste, nicht im Bundesland Sachsen noch ein Feiertag, wären wir hier bereits an unserem Ziel angelangt. So aber müssen wir auch die Berechnung des Buß- und Bettags berücksichtigen: Er fällt auf den Mittwoch vor dem Sonntag vor dem ersten Adventssonntag. Offensichtlich ist, dass der erste Adventssonntag drei Wochen vor dem vierten Adventssonntag liegt. Der vierte Adventssonntag wiederum ist der Sonntag vor dem 25. Dezember eines Jahres.

WEBLink

BeitragDo, März 24, 2005 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Diese Tagberechnung raff ich gar nicht.
Ich hab jetzt mit CurrentDate das Datum wiedergegeben. nun möchte ich wissen wie man den Wochentag rausbekommt. Wenn ich di Berechnungen sie ist mir das zu hoch.

Gibts da nicht ein befehl wie bei Delphi
 

Gerhard

BeitragDo, März 24, 2005 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Tagberechnung hab ich früher auch gemacht, ohne sie im Detail zu verstehen. Nimm doch erstmal einfach die Funktion von Timo.
 

Timo

BeitragDo, März 24, 2005 23:14
Antworten mit Zitat
Benutzer-Profile anzeigen
WEBLink hat Folgendes geschrieben:
Gibts da nicht ein befehl wie bei Delphi


Delphi hat mit Sicherheit keine Funktion, um den Wochentag zu errechnen Wink
Aber fass das von mir einfach in eine Funktion und schon haste's Smile

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group