Rubrik: Datum/Zeit und Timer · Datums- und Zeit-Funktionen | VB-Versionen: VB2010 - VB2015 | 30.10.17 |
Anzahl Tage von heute bis zum nächsten Geburtstag ermitteln Mit der Funktion wird die Anzahl der Tage berechnet, die zwischen dem heutigen Tag und dem nächsten Geburtstag einer Person liegen. | ||
Autor: Dietrich Herrmann | Bewertung: | Views: 6.575 |
ohne Homepage | System: Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Als Input für die Funktion wird der Geburtstag der betreffenden Person benötigt, als String, als bspw. 17.3.1975.
Liegt der Geburtstag nach dem heutigen Datum erfolgt die Berechnung einfach als Differenz. Liegt aber der diesjährige Geburtstag vor dem heutigen Datum, ist also schon vorbei, wird der Abstand zum Geburtstag im nächsten Jahr berechnet.
Anhand dieser Zahl kann man bspw. eine Mitteilung ausgeben, wenn der Geburtstag nur noch 5 Tage entfernt liegt...
Und: es muss nicht der Geburtstag sein, die Funktion ist auch verwendbar auf irgendeinen Termin, muss dann nur geringfügig angepasst werden.
Hier der Code:
''' <summary> ''' Ermittlung der Anzahl der Tage von heute bis zum nächsten Geburtstag ''' </summary> ''' <param name="nullBT">der Geburtstag der Person als String</param> ''' <returns>die Anzahl der Tage</returns> Private Function nextBirthday(nullBT As String) As Short Dim dDay, nDay, lDay As Date, nowDOY, nDayDOY, diffDOY As Short ' der Geburtstag dDay = CDate(nullBT) ' Geburtstag im akt. Jahr nDay = DateSerial(Now.Year, dDay.Month, dDay.Day) ' Nummer des heutigen Tages im akt. Jahr nowDOY = Now.DayOfYear ' Nummer des Geburtstages im akt. Jahr nDayDOY = nDay.DayOfYear ' Differenz der Tagesnummern diffDOY = nDayDOY - nowDOY If diffDOY < 0 Then ' nächster Geburtstag liegt im nächsten Jahr ' Geburtstag im nächsten Jahr nDay = DateSerial(Now.Year + 1, dDay.Month, dDay.Day) ' Nummer des Geburtstages im nächstenJahr nDayDOY = nDay.DayOfYear ' Silvester des akt. Jahres lDay = DateSerial(Now.Year, 12, 31) diffDOY = lDay.DayOfYear - nowDOY + nDayDOY End If Return diffDOY End Function