0

VB.net に組み込まれている関数がどの週に属しているかを教えてくれるかどうか疑問に思っていました。

すなわち。2013-05-10 = 「第 2 週の一部」 2013-05-31 = 「第 5 週の一部」

datetimepicker にはこのための関数が付属していますか? 前もって感謝します!

4

1 に答える 1

2

選択した月の最初の日の WeekOfYear と、選択した日付の WeekOfYear を比較できます。

Dim dtDate1 As DateTime = New DateTime(2013, 5, 10)
MsgBox(DatePart(DateInterval.WeekOfYear, dtDate1, FirstDayOfWeek.System) - DatePart(DateInterval.WeekOfYear, New DateTime(dtDate1.Year, dtDate1.Month, 1), FirstDayOfWeek.System) + 1)

Dim dtDate2 As DateTime = New DateTime(2013, 5, 31)
MsgBox(DatePart(DateInterval.WeekOfYear, dtDate2, FirstDayOfWeek.System) - DatePart(DateInterval.WeekOfYear, New DateTime(dtDate2.Year, dtDate2.Month, 1), FirstDayOfWeek.System) + 1)

または関数として:

Function GetWeekInMonth(dtDate As Date) As Integer
    Dim DateWeekNumber As Integer = DatePart(DateInterval.WeekOfYear, dtDate, FirstDayOfWeek.System)
    Dim MonthStartWeek As Integer = DatePart(DateInterval.WeekOfYear, New DateTime(dtDate.Year, dtDate.Month, 1), FirstDayOfWeek.System)
    Return DateWeekNumber - MonthStartWeek + 1
End Function  

しかし、これを日付オブジェクトの拡張機能として追加するのは本当に素晴らしいことです:

Module Extensions
    <System.Runtime.CompilerServices.Extension> _
    Public Function GetWeekInMonth(dtDate As Date) As Integer
        Dim DateWeekNumber As Integer = DatePart(DateInterval.WeekOfYear, dtDate, FirstDayOfWeek.System)
        Dim MonthStartWeek As Integer = DatePart(DateInterval.WeekOfYear, New DateTime(dtDate.Year, dtDate.Month, 1), FirstDayOfWeek.System)
        Return DateWeekNumber - MonthStartWeek + 1
    End Function

End Module

プロジェクト内のすべての日付オブジェクトで .GetWeekInMonth を使用できるようになりました。

Dim weeknr As Integer = CDate("2013-05-31").GetWeekInMonth
于 2013-05-30T09:57:33.953 に答える