2015-05-13 45 views
0

月29天我試圖填充通過下面的代碼生成.NET

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 

問題是由system產生No.of days一個dropdown,爲二月份它顯示只有28天,因爲下面的代碼生成本年度的基礎上Days今年是不是閏年

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

如何解決它總是顯示29天爲Februaray的一個月?

+5

'System.DateTime.DaysInMonth(2000,ddlMonth.SelectedValue)'? – erikkallen

+0

@erikkallen:很好,簡單的黑客是最好的。 –

+1

您應該從代碼中刪除空的catch塊。吞下這樣的例外被認爲是不好的做法。 – Kratz

回答

0

您可以使用DayInMonth在日期時間

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

這讓你知道在一個月內每天2015年2月。參數裏面的年份和月份

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))