考虑闰年VB.net

use*_*009 1 .net vb.net

我有以下一段代码从2月1日开始查看年份,而不是1月1日.我已做出改变,但它没有说明闰年.如何修改此代码以确保它占据闰年.我在VB中比较新.有内置功能吗?

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)
Run Code Online (Sandbox Code Playgroud)

Ňɏs*_*arp 8

DateTime类型包括IsLeapYear(year as Integer)功能.它是一个共享/静态函数,因此您使用DateTime年份值调用它:

IsLeap = DateTime.IsLeapYear(myYearValue)
'  or
IsLeap = DateTime.IsLeapYear(myDt.Year)
Run Code Online (Sandbox Code Playgroud)

或作为If:

If DateTime.IsLeapYear(myDate.Year) Then ...
Run Code Online (Sandbox Code Playgroud)

这可能看起来令人困惑myDateVar.IsLeapYear,但是它允许您在不必先创建DateTime变量的情况下测试年份值.