在VB中,计算每个月的第5个工作日

时间:2010-03-25 15:23:59

标签: vb.net date

在VB中,我可以使用什么编码来计算每个月的第5个工作日?如果第五天假期有一天上去。

4 个答案:

答案 0 :(得分:1)

您需要一个可供比较的假日日期列表。您需要单独构建和存储该列表。你没有说VB的哪个变种(VBA?VB.NET?),但在VB.NET中你可以做到:

Dim datevalue As DateTime = New DateTime(DateTime.Year, DateTime.Month, 1)
Dim dayIsFound As Boolean = False
Dim workDays As Integer

workDays = 1
While Not dayIsFound
    If ( dateValue.DayOfWeek <> DayOfWeek.Saturday _ 
        And dateValue.DayOfWeek <> DayOfWeek.Sunday _ 
        And Not HolidayList.Contains( dateValue )  _ 

        workDays = workDays + 1
    End If

    If  index >= 5 Then
        dayIsFound = True
    Else
        dateValue = dateValue.AddDays(1)
    End If
End While

从技术上讲,可以根据联邦指南(在美国)构建一个确定主要假期的算法,但它很复杂,可能不符合您构建此组件的公司的假期。

答案 1 :(得分:1)

问题有2个主要组成部分 - 首先你需要一个公共假期列表,其次你需要计算你所在地区工作日的星期几。

您可以对假期进行硬编码以获得快速解决方案,如果您希望此代码在未经修改的情况下继续工作,则需要Google提供一些算法/功能来计算您的假期。以下是假期的一些示例计算函数的链接,包括Easter。 http://www.cpearson.com/EXCEL/holidays.htm

您的主要功能可以使用VB功能Weekday和WeekdayName(如果需要)与您的公众假期列表一起计算正常工作日的所有日期,这些日期不在您的公共假期列表中。

答案 2 :(得分:1)

周六和周日使用工作日功能。假期取决于地点和国家,您需要为此实现自己的功能。

答案 3 :(得分:1)

您需要计算每个有效的工作日,直到您到达第五个工作日。 E.g。

index = 0
Do
  If dateValue.DayOfWeek <> DayOfWeek.Saturday _ 
      AndAlso dateValue.DayOfWeek <> DayOfWeek.Sunday _ 
      AndAlso Not HolidayList.Contains( dateValue ) Then

     index = index + 1
     If index >= 5 Then _
        Exit Do
  End If
  dateValue = dateValue.AddDays(1)
Loop
相关问题