在VB中,我可以使用什么编码来计算每个月的第5个工作日?如果第五天假期有一天上去。
答案 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