VB.NETで、指定日が月の第何週であるかを取得するメソッド

https://stackoverflow.com/questions/2136487/calculate-week-of-month-in-net
System.Globalization.GregorianCalendarがGetWeekOfYearメソッドを持っていて年の第何週か取得できるので、それを使って月の1日目の週番号と指定日の週番号の差で求める。

Public Function GetWeekOfMonth(dDate As Date) As Integer
    Dim oCalendar = New System.Globalization.GregorianCalendar()
    Dim nDateWeek = oCalendar.GetWeekOfYear(dDate, Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday)
    Dim dMonthFirst = New DateTime(dDate.Year, dDate.Month, 1)
    Dim nMonthFirstWeek = oCalendar.GetWeekOfYear(dMonthFirst, Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday)
    Return nDateWeek - nMonthFirstWeek + 1
End Function