月末の日付(末日)を取得するには以下のようにします。
末日を取得するプロシージャ
''' <summary>
''' 指定年月の末日を取得する
''' </summary>
''' <param name="yearmonth">yyyy/MM</param>
''' <returns></returns>
''' <remarks></remarks>
Private Function GetEndDate(ByVal yearmonth As String) As DateTime
Dim d As DateTime
If DateTime.TryParse(yearmonth & "/01", d) Then
'翌月の1日前を返す
Return d.AddMonths(1).AddDays(-1)
Else
Throw New ArgumentException("yearmonthが不正です。yyyy/MMを指定してください。")
End If
End Function
''' <summary>
''' 指定日付の月の末日を取得する
''' </summary>
''' <param name="d"></param>
''' <returns></returns>
''' <remarks></remarks>
Private Function GetEndDate(ByVal d As DateTime) As DateTime
'月初の翌月の1日前を返す
Return d.AddDays(-(d.Day - 1)).AddMonths(1).AddDays(-1)
End Function
末日を取得する
'年月指定
Me.TextBox1.Text = GetEndDate("2008/12").ToString("yyyy/MM/dd")
'日付指定
Me.TextBox2.Text = GetEndDate(Now).ToString("yyyy/MM/dd")