vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Sch?tzen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2020
 
zurück

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

VB.NET - Ein- und Umsteiger
Re: Tipp 304: Alle Tage zweier Datumswerte ermitteln 
Autor: HenryV
Datum: 05.02.20 09:54

Ich hab es mir auch einmal angeschaut und es in Kombination mit Tipp Enumerationen als Bitfelder nutzen gelöst.
<Flags()>
Public Enum WT As Integer
    Mo = 1       '0. Bit
    Di = 2       '1 .Bit
    Mi = 4       '2. Bit
    [Do] = 8     '3. Bit
    Fr = 16      '4. Bit
    Sa = 32      '5. Bit
    So = 64      '6. Bit
End Enum
 
Public Function Datumschleife(ByVal DateStart As Date, ByVal DateEnd As Date, _
  Optional ByVal WTage As Integer = 127) As List(Of Dat
 
    ' Anzahl Tage zwischen Datum1 und Datum2 ermitteln
    Dim Days As Integer = DateEnd.Subtract(DateStart).Days + 1
    Datumschleife = New List(Of Date)
 
    For i As Integer = 0 To Days - 1
 
        ' Prüfen, ob ermittelter Wochentag berücksichtigt werden soll
        Select Case True
            Case DateStart.AddDays(i).DayOfWeek = DayOfWeek.Monday AndAlso _
              CBool(WTage And (1 << 0))
                Datumschleife.Add(DateStart.AddDays(i))
            Case DateStart.AddDays(i).DayOfWeek = DayOfWeek.Tuesday AndAlso _
              CBool(WTage And (1 << 1))
                Datumschleife.Add(DateStart.AddDays(i))
            Case DateStart.AddDays(i).DayOfWeek = DayOfWeek.Wednesday AndAlso _
              CBool(WTage And (1 << 2))
                Datumschleife.Add(DateStart.AddDays(i))
            Case DateStart.AddDays(i).DayOfWeek = DayOfWeek.Thursday AndAlso _
              CBool(WTage And (1 << 3))
                Datumschleife.Add(DateStart.AddDays(i))
            Case DateStart.AddDays(i).DayOfWeek = DayOfWeek.Friday AndAlso _
              CBool(WTage And (1 << 4))
                Datumschleife.Add(DateStart.AddDays(i))
            Case DateStart.AddDays(i).DayOfWeek = DayOfWeek.Saturday AndAlso _
              CBool(WTage And (1 << 5))
                Datumschleife.Add(DateStart.AddDays(i))
            Case DateStart.AddDays(i).DayOfWeek = DayOfWeek.Sunday AndAlso _
              CBool(WTage And (1 << 6))
                Datumschleife.Add(DateStart.AddDays(i))
        End Select
    Next
 
    Return Datumschleife
 
End Function
Anwendung:
Dim wts As Integer = WT.Mo Or WT.Di Or WT.Mi Or WT.Do Or WT.Fr
Dim l As List(Of Date) = Datumschleife(New Date(2020, 1, 1), Date.Today, wts)
For Each d As Date In l
    ListView1.Items.Add(d.ToLongDateString)
Next
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Tipp 304: Alle Tage zweier Datumswerte ermitteln195manuelhasi04.02.20 21:01
Re: Tipp 304: Alle Tage zweier Datumswerte ermitteln93Manfred X05.02.20 00:05
Re: Tipp 304: Alle Tage zweier Datumswerte ermitteln59manuelhasi05.02.20 08:51
Re: Tipp 304: Alle Tage zweier Datumswerte ermitteln58manuelhasi05.02.20 09:37
Re: Tipp 304: Alle Tage zweier Datumswerte ermitteln61HenryV05.02.20 09:54
Re: Tipp 304: Alle Tage zweier Datumswerte ermitteln65manuelhasi05.02.20 11:53
Re: Tipp 304: Alle Tage zweier Datumswerte ermitteln58Manfred X05.02.20 20:12
Re: Tipp 304: Alle Tage zweier Datumswerte ermitteln65Manfred X05.02.20 20:44
Re: Tipp 304: Alle Tage zweier Datumswerte ermitteln47HenryV07.02.20 08:41

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-2020 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