以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  法定假期  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=140941)

--  作者:联友
--  发布时间:2019/9/17 22:27:00
--  法定假期

Dim tp As TimeSpan = e.Form.Controls("结束日期").Value - e.Form.Controls("开始日期").Value
e.Form.Controls("天数").Value = tp.TotalDays +1-(周六 周日 假期) + 上班

请师傅指教,谢谢


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20190917222845.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2019/9/17 22:37:17编辑过]

--  作者:有点蓝
--  发布时间:2019/9/17 22:50:00
--  
Dim d1 As Date = e.Form.Controls("结束日期").Value
Dim d2 As Date = e.Form.Controls("开始日期").Value
Dim lst1 As New List(of Date)
For Each dr As DataRow In DataTables("法定假期").Select("日期 >= #" & d1 & "# and 日期 <= #" & d2 & "#")
    lst1.Add(dr("日期"))
Next
Dim TotalDays As Integer
Do While d1 <= d2
    If d1.DayOfWeek = 0 OrElse d1.DayOfWeek = 6 OrElse lst1.Contains(d1)
    Else
        TotalDays += 1
    End If
    d1 = d1.AddDays(1)
Loop
e.Form.Controls("天数").text = TotalDays 

--  作者:联友
--  发布时间:2019/9/18 7:24:00
--  

老师计算不了,法定假期名称有周日或周六要上班。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:法定假期.rar

[此贴子已经被作者于2019/9/18 7:28:15编辑过]

--  作者:有点蓝
--  发布时间:2019/9/18 8:58:00
--  
Dim d1 As Date = e.Form.Controls("开始日期").Value
Dim d2 As Date = e.Form.Controls("结束日期").Value
Dim lst1 As New List(of Date)
Dim lst2 As New List(of Date)
For Each dr As DataRow In DataTables("法定假期").Select("日期 >= #" & d1 & "# and 日期 <= #" & d2 & "# and 名称 <> \'上班\'")
    lst1.Add(dr("日期"))
Next
For Each dr As DataRow In DataTables("法定假期").Select("日期 >= #" & d1 & "# and 日期 <= #" & d2 & "# and 名称 = \'上班\'")
    lst2.Add(dr("日期"))
Next
Dim TotalDays As Integer
Do While d1 <= d2
    If (d1.DayOfWeek = 0 OrElse d1.DayOfWeek = 6 OrElse lst1.Contains(d1)) And lst2.Contains(d1) = False
    Else
        TotalDays += 1
    End If
    d1 = d1.AddDays(1)
Loop
e.Form.Controls("天数").value = TotalDays

--  作者:联友
--  发布时间:2019/9/18 9:13:00
--  
谢谢