在.NET中生成2月29日

时间:2015-05-13 07:42:04

标签: vb.net datetime leap-year

我正在尝试通过以下代码填充由dropdown生成的No.of days system

Sub LoadDay()
        Try
            ddlDay.Items.Clear()
            For i As Integer = 1 To System.DateTime.DaysInMonth(DateTime.Today.Year, ddlMonth.SelectedValue)
                ddlDay.Items.Add(New ListItem(i.ToString(), i.ToString("00")))
            Next
            ddlDay.Items.Insert(0, New ListItem("--Select--", -999))
        Catch ex As Exception
        End Try
    End Sub

问题是,2月份它只显示28天,因为以下代码根据当前年份生成Days,今年不是闰年

System.DateTime.DaysInMonth(DateTime.Today.Year, ddlMonth.SelectedValue)

如何修复它以显示Februaray月份的29天?

2 个答案:

答案 0 :(得分:0)

您可以在DateTime中使用DayInMonth

Dim dayinMonth As String
dayinMonth = System.DateTime.DaysInMonth(2012, 2)

这可让您了解2015年2月的某一天。年内和月份内的参数

答案 1 :(得分:0)

我有兴趣知道你的要求是什么,你必须能够选择无效的日子,但是,如果你不想根据年份改变你的日子,那就创建你自己的一连串的日子。这使您的意图比在DaysInMonth函数中放置任意年份更清晰。

            Dim Days = {31,28,31,30,31,30,31,31,30,31,30,31}
            ddlDay.Items.Clear()
            For i As Integer = 1 To Days(ddlMonth.SelectedValue-1)
                ddlDay.Items.Add(New ListItem(i.ToString(), i.ToString("00")))
            Next
            ddlDay.Items.Insert(0, New ListItem("--Select--", -999))