Alle Kalenderwochen eines Jahres mit Start und Ende Datum

    • VB.NET

    Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von muecke3.16.

      Alle Kalenderwochen eines Jahres mit Start und Ende Datum

      Hallo,

      aus gegebenem Anlass hier ein kleines Codeschnippsel wie man alle Kalenderwochen mit ihren jeweiligen Start und Ende Datums (?) ermittelt.
      Hierfür benötigt ihr ein ListView (ListView1).

      VB.NET-Quellcode

      1. Public Class Form1
      2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      3. 'listview einstellen
      4. Me.ListView1.View = View.Details
      5. Me.ListView1.Columns.Add("KW")
      6. Me.ListView1.Columns.Add("Start")
      7. Me.ListView1.Columns.Add("Ende")
      8. Me.ListView1.Dock = DockStyle.Fill
      9. 'ersten tag der zweiten woche finden
      10. Dim tag As Integer = 1
      11. Do
      12. If GetKW(New Date(Now.Year, 1, tag)) = 2 Then
      13. 'tag -= 1
      14. Exit Do
      15. End If
      16. tag += 1
      17. Loop
      18. 'alle wochen in eine listbox eintragen
      19. Add2List(1, New Date(Now.Year, 1, 1), New Date(Now.Year, 1, tag - 1))
      20. Dim d_start As New Date(Now.Year, 1, tag)
      21. For i As Integer = 2 To 52
      22. Dim d_end As Date = d_start.AddDays(6)
      23. Add2List(i.ToString, d_start, d_end)
      24. d_start = d_start.AddDays(7)
      25. Next
      26. End Sub
      27. Private Function GetKW(ByVal d As Date) As Integer
      28. Return DatePart(DateInterval.WeekOfYear, d, FirstDayOfWeek.Monday)
      29. End Function
      30. Private Sub Add2List(ByVal kw As String, ByVal d1 As Date, ByVal d2 As Date)
      31. Dim li As ListViewItem = Me.ListView1.Items.Add(kw)
      32. li.SubItems.Add(d1.ToString)
      33. li.SubItems.Add(d2.ToString)
      34. End Sub
      35. End Class

      Gruss

      mikeb69
      Ich hätte noch eine Möglichkeit wie man die aktuelle KW herausfindet.
      folgendes in eine Klasse schreiben:

      VB.NET-Quellcode

      1. Public Class KW
      2. Public KW As String
      3. Public Sub New(ByVal newDate As Date)
      4. ausgabe(newDate)
      5. End Sub
      6. Public Function DateToWeek(ByVal dDate As Date) As String
      7. ' Startdatum der ersten Kalenderwoche des Jahres und Folgejahres berechnen
      8. Dim dThisYear As Date = CalendarWeek(1, dDate.Year)
      9. Dim dNextYear As Date = CalendarWeek(1, dDate.Year + 1)
      10. ' Prüfen, ob Datum zur ersten Woche des Folgejahres gehört
      11. If dDate >= dNextYear Then
      12. ' Rückgabe: KW 1 des Folgejahres
      13. Return dDate.Year + 1 & "01"
      14. Else
      15. ' KW = Differenz zum ersten Tag der ersten Woche
      16. Return dDate.Year & Format$(dDate.Subtract(dThisYear).Days \ 7 + 1, "00")
      17. End If
      18. End Function
      19. Public Function CalendarWeek(ByVal nWeek As Integer, _
      20. ByVal nYear As Integer) As Date
      21. ' Wochentag des 4. Januar des Jahres ermitteln
      22. Dim dStart As New Date(nYear, 1, 4)
      23. Dim nDay As Integer = (dStart.DayOfWeek + 6) Mod 7 + 1
      24. ' Beginn der 1. KW des Jahres
      25. Dim dFirst As Date = dStart.AddDays(1 - nDay)
      26. ' Gesuchte KW ermitteln
      27. Return dFirst.AddDays((nWeek - 1) * 7)
      28. End Function
      29. Sub ausgabe(ByVal newDate As Date)
      30. 'Heutiges Datum
      31. Dim sKW As String = DateToWeek(CDate(newDate))
      32. 'sKW.Remove entfernt die letzten beiden Zeichen vorher:(200842) nachher:(2008)
      33. 'sKW.Substring zeigt nur die letzen beiden Zeichen an, die für die KW
      34. KW = sKW.Remove(4, 2) & " KW" & sKW.Substring(4, 2)
      35. End Sub
      36. End Class


      Beispielaufruf:

      VB.NET-Quellcode

      1. Public Wochentag As KW
      2. Wochentag = New KW(DateAdd(DateInterval.WeekOfYear, weekzaehler, Date.Now))
      3. lb2.Text = GetWochentag(Date.Now)