vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
prüfe Datum ob es ein Feiertag ist 
Autor: ERBRU
Datum: 27.12.20 12:14

Hallo zusammen,

so prüfe ich ein Datum mit der Funktion DayofWeek auf Sa So ich möchte
            Dim D As Date = DateFrom.Date.AddDays(i)
            Dim anfang As Date
            Dim ende As Date
            Dim dauer As Long
            '-----------------------------------------------------------------
 
            anfang = D.Add(New TimeSpan(7, 30, 0))
            ende = D.Add(New TimeSpan(16, 0, 0))
            dauer = CLng(DateDiff("n", anfang, ende))
            Dim pause As Integer = 45
            Dim soll As Integer = 408
 
            '-----------------------------------------------------------------
            'Abfrage ob Datum schon vorhanden ist
            If dt.Select("Tag = '" & D & "'").Count = 0 Then
 
                Dim NewRow As DataRow = dt.NewRow
                NewRow("ATag") = D.ToString("ddd")
                NewRow("Tag") = D
                If D.DayOfWeek = DayOfWeek.Saturday Or D.DayOfWeek = _
                  DayOfWeek.Sunday _
                  Then
 
                    NewRow("Beginn") = D.Add(New TimeSpan(0, 0, 0))
                    NewRow("Ende") = D.Add(New TimeSpan(0, 0, 0))
                    NewRow("Pause") = 0
                    NewRow("Anwesend") = 0
                    NewRow("SollAZ") = 0
                    NewRow("IstAZ") = 0
                    NewRow("Gleitzeit") = 0
                    NewRow("Bemerkung") = "WE"
 
                Else
 
                    NewRow("Beginn") = D.Add(New TimeSpan(7, 30, 0))
                    NewRow("Ende") = D.Add(New TimeSpan(16, 0, 0))
                    NewRow("Pause") = pause
                    NewRow("Anwesend") = dauer
                    NewRow("SollAZ") = soll
                    NewRow("IstAZ") = dauer - pause
                    NewRow("Gleitzeit") = (dauer - soll) - pause
                    NewRow("Bemerkung") = "Anwesend"
                End If
 
                dt.Rows.Add(NewRow)
            End If
 
        Next
nun möchte ich auch noch auf Feiertag prüfen und den dann in der NewRow("Bemerkung") eintragen.

wie geht das ? bzw wie gehe ich da vor ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: prüfe Datum ob es ein Feiertag ist 
Autor: effeff
Datum: 27.12.20 18:35

Für nicht feststehende Feiertage:

https://www.vbarchiv.net/tipps/tipp_1185-bewegliche-feiertage-und-arbeitstage-eines-monats.html

Für feststehende Feiertage dürftest Du die Werte wissen...

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: prüfe Datum ob es ein Feiertag ist 
Autor: ERBRU
Datum: 28.12.20 08:34

Danke effeff,
das hatte ich schon gefunden
doch komme ich mit dem VB6 Code nicht klar.

viele Bugs drin

zBsp. hier ' Speziallfall: Februar (auf Schaltjahr prüfen)
Tage = Day(DateAdd("d", -1, X))

Day ist ein Typ und kann nicht als Ausdruck verwendet werden
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: prüfe Datum ob es ein Feiertag ist 
Autor: effeff
Datum: 28.12.20 13:23

Da sind keine Bugs drin...

Schaffst Du es nicht, bei Google einzugeben: "VB.NET Day" und erhältst dann z. B.:

https://docs.microsoft.com/de-de/dotnet/api/microsoft.visualbasic.dateandtime.day?view=net-5.0

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: prüfe Datum ob es ein Feiertag ist 
Autor: JangoF
Datum: 28.12.20 17:56

Folgend Funktion liefert den Ostersonntag, alle beweglichen Feiertage sind damit berechenbar.

Private Function OsterSonntag(ByVal Jahr As Integer) As Date
        ' Function OsterSonntag gibt das Datum für den
        ' Ostersonntag des in Jahr übergebenen Jahres zurück.
        Dim m As Integer
        Dim n As Integer
 
        Dim a As Integer
        Dim b As Integer
        Dim c As Integer
        Dim d As Integer
        Dim e As Integer
 
        Dim Tag As Integer
        Dim Monat As Integer
 
        m = 23
        n = 3
 
        If Jahr > 1799 Then
            n = 4
        End If
 
        If Jahr > 1899 Then
            n += 1
            m = 24
        End If
 
        If Jahr > 2099 Then
            n += 1
        End If
 
        a = Jahr Mod 19
        b = Jahr Mod 4
        c = Jahr Mod 7
        d = ((a * 19) + m) Mod 30
        e = ((b * 2) + (c * 4) + (d * 6) + n) Mod 7
        Tag = d + e + 22
 
        If Tag > 31 Then
            Tag -= 31
            If (Tag = 26) Or ((Tag = 25) And (d = 28) And (a > 10)) Then
                Tag -= 7
            End If
            Monat = 4
        Else
            Monat = 3
        End If
 
        Return DateSerial(Jahr, Monat, Tag)
    End Function
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: prüfe Datum ob es ein Feiertag ist 
Autor: ERBRU
Datum: 28.12.20 20:03

Danke JangoF,

ich möchte aus einem DTPDatumVon und DTPDatumBis datumse auswählen und in die Tabelle Arbeitszeit schreiben, dabei soll nicht nur auf Samstag, Sonntag geprüft werden sondern auch ob es ggf. ein Feiertag ist an dem nicht gearbeitet werden muss. Das soll automatisiert werden
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: prüfe Datum ob es ein Feiertag ist 
Autor: Manfred X
Datum: 30.12.20 02:59

Hallo!

Die arbeitsfreien Tage sind in Deutschland regional (Länder) unterschiedlich geregelt.
Eine simple Automatisierung ist deshalb ohne Standort-Bezug nicht möglich.
Bei Logistik-Programmen ist jede Etappe der Wegstrecke zu beachten.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: prüfe Datum ob es ein Feiertag ist 
Autor: ERBRU
Datum: 30.12.20 11:51

also müsste man einen Standort-Bezug einbauen ?

und dann geht es wie weiter ?

oder lass ich lieber die Finger davon!
wenn es doch komplzierter ist als ich dachte
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: prüfe Datum ob es ein Feiertag ist 
Autor: Manfred X
Datum: 03.01.21 02:33

Hallo!

Ich kann nicht beurteilen, ob regionale (konfessionelle) Feiertage
bei Dir eine bedeutsame Rolle spielen.

Die regionalen Feiertage (arbeitsfreien Tage) kann man den Kalendern
der nächsten Jahre entnehmen und sie in eine Datei oder Datenbank eintragen.
Alles weitere hängt von der beabsichtigten Funktionalität des Programms
ab.
Geht es um den aktuellen Standort des Programm-Anwenders oder um
Städte/Gemeinden auf die der Nutzer des Programms sich im Dialog bezieht
bzw. die er aus der Datenbank abfragt?

Eventuell sind Gebietsinformationen (Bundesland) zu den Datensätzen
(mit Ortsbezug, z.B. Adressen) in der Datenbank zu speichern.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel