vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Datum/Zeit und Timer · Datums- und Zeitfunktionen   |   VB-Versionen: VB619.03.03
Wochendatum anhand Kalenderwoche ermitteln

Dieser Tipp verrät, wie sich das Wochendatum (Montag - Sonntag) einer bestimmten Kalenderwoche ermitteln lässt.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  31.665 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Unser heutiger Tipp zeigt einen Weg, wie sich das Wochendatum (Montag - Sonntag) einer bestimmten Kalenderwoche eines beliebigen Jahres ermitteln lässt.

Für den umgekehrten Weg, d.h. ist ein Datum bekannt und man möchte die Kalenderwoche wissen, bietet VB ja bereits eine fertige Lösung:

Dim nWeek As Integer
nWeek = Val(Format$(vDatum, "ww", vbMonday, vbFirstFourDays))

Wie sieht es aber aus, wenn nur die Kalenderwoche bekannt ist und man jetzt das Datum dieser Kalenderwoche benötigt?

Und genau das zeigt Ihnen nachfolgender Tipp.

Public Function GetDateFromWeek(ByVal nWeek As Integer, _
  Optional ByVal nDayOfWeek As VBA.VbDayOfWeek = vbMonday, _
  Optional ByVal nYear As Integer = -1) As Date
 
  Dim nCurWeek As Integer
  Dim vStart As Variant
  Dim vMonday As Variant
  Dim vSunday As Variant
  Dim nDay As Integer
 
  ' Kein Jahr angeben? Dann aktuelles Jahr verwenden!
  If nYear = -1 Then nYear = Year(Now)
 
  ' aktuelle Woche im Jahr nYear ermitteln
  vStart = DateSerial(nYear, Month(Now), Day(Now))
  nCurWeek = Val(Format$(vStart, "ww", vbMonday))
 
  ' Datum der gewünschten Woche ermitteln
  vStart = DateAdd("ww", nWeek - nCurWeek, vStart)
 
  ' Wochenanfang ermitteln
  nDay = Weekday(vStart, vbMonday)
 
  ' Datum des gewünschten Wochentags ermitteln
  If nDayOfWeek = vbSunday Then
    GetDateFromWeek = DateAdd("d", -nDay + 7, vStart)
  Else
    GetDateFromWeek = DateAdd("d", -nDay + nDayOfWeek - 1, vStart)
  End If
End Function

Nehmen wir an, Sie benötigen das Datum für den Montag, sowie den darauffolgenden Sonntag der 12. Kalenderwoche im Jahr 2003:

Dim vMonday As Date
Dim vSunday As Date
 
vMonday = GetDateFromWeek(12, vbMonday, 2003)
vSunday = GetDateFromWeek(12, vbSunday, 2003)

Hinweis:
Die obige Funktion sieht Montag als den 1. Tag der Woche an und demzufolge Sonntag als den letzten Tag der Woche!
 

Dieser Tipp wurde bereits 31.665 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (1 Beitrag)

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 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