2014-02-12 60 views
1

我有以下一段代码,从今年2月1日开始,而不是1月1日开始。我已经做了更改,但是它没有考虑闰年。我如何修改此代码以确保它占闰年。我在VB中比较新。有一个内置的函数吗?闰年会计VB.net

Dim dt As Date 
    Dim Y2Dday As Integer 
    Dim Y2Dyear As Integer 
    Dim strDepartment1 As String 

    dt = dtpDate.Value 
    'Y2Dday = -dt.DayOfYear + 32 
    Y2Dday = -dt.DayOfYear + 366 
    'If dt.DayOfYear > 31 Then 
    If dt.DayOfYear > 365 Then 
     Y2Dyear = 0 
    Else 
     Y2Dyear = -1 
    End If 
    strDepartment1 = strDepartment.Replace("departmentid", "o.departmentid") 

    Dim collection As ItemCollection 
    Dim qry As QueryItem 

    collection = ItemCollection.GetInstance() 
    qry = collection.GetQueryItem(intItem) 
    If (Not qry Is Nothing) Then 
     qry.SetQueryParameter(QueryItem.QueryParameter.DateFormat, intDateFormat.ToString()) 

     qry.SetQueryDate(1, dt.ToString) 
     'Date used by Item(s) looking at Month to Date 
     qry.SetQueryDate(2, dt.AddDays(-dt.Day + 1).ToString) 

     'Date used by Item(s) looking at Year to Date 
     qry.SetQueryDate(3, dt.AddDays(Y2Dday).AddYears(Y2Dyear).ToString) 

     'Date used by Item(s) looking at Yesterday 
     qry.SetQueryDate(4, dt.AddDays(-1).ToString) 
+0

如果这个工作适合你,请点击对号 – Plutonix

回答

8

DateTime类型包括IsLeapYear(year as Integer)功能。这是一个共享/静态功能,所以你调用使用DateTime与上年值是:

IsLeap = DateTime.IsLeapYear(myYearValue) 
' or 
IsLeap = DateTime.IsLeapYear(myDt.Year) 

或作为若:

If DateTime.IsLeapYear(myDate.Year) Then ... 

这似乎令人困惑不能够做myDateVar.IsLeapYear,但它允许您测试年份值,而不必首先创建DateTime变量。