以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 如何计算工作日天数? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=159332)
|
-- 作者:xhydxs
-- 发布时间:2020/12/22 15:46:00
-- 如何计算工作日天数?
例如:我想计算2020年12月1日至2020年12月22日的工作日天数,怎么写代码啊? 此主题相关图片如下:qq图片20201222154509.png
|
-- 作者:洮沙
-- 发布时间:2020/12/22 15:52:00
-- 回复:(xhydxs)如何计算工作日天数?
Days
返回时段数据的天数。
例如:
Dim d1 as Date = #3/17/2002 12:30:29# Dim d2 as Date = #1/1/2008 10:11:49# Dim t As TimeSpan = d2 - d1 Output.Show(t.Days & "天" & t.Hours & "小时" & t.Minutes & "分" & t.Seconds & "秒")
上述代码的输出结果是:2115天21小时41分20秒
|
-- 作者:xhydxs
-- 发布时间:2020/12/22 15:54:00
--
要去除周六和周日哦
|
-- 作者:有点蓝
-- 发布时间:2020/12/22 15:59:00
--
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=150479&skin=0
|
-- 作者:xhydxs
-- 发布时间:2020/12/23 9:23:00
-- 有时“天数”我需要手动输入数据,这段代码怎么改啊?
If e.DataRow.IsNull("开始时间") And e.DataRow.IsNull("结束时间") Then e.DataRow("天数") = Nothing Else Dim d1 As Date = e.DataRow("开始时间") Dim d2 As Date = e.DataRow("结束时间") If d1 > d2 e.DataRow("天数") = 0 Else Dim cnt As Integer = (d2 - d1).TotalDays For i As Integer = 1 To cnt Dim d3 As Date = d1.adddays(i) If d3.DayOfWeek = 0 OrElse d3.DayOfWeek = 6 Then \'如果是星期天或者星期六 cnt = cnt - 1 End If Next e.DataRow("天数") = cnt + 1 End If End If
|
-- 作者:xhydxs
-- 发布时间:2020/12/23 9:24:00
--
以下是引用有点蓝在2020/12/22 15:59:00的发言: http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=150479&skin=0
有时“天数”我需要手动输入数据,这段代码怎么改啊?
If e.DataRow.IsNull("开始时间") And e.DataRow.IsNull("结束时间") Then e.DataRow("天数") = Nothing Else Dim d1 As Date = e.DataRow("开始时间") Dim d2 As Date = e.DataRow("结束时间") If d1 > d2 e.DataRow("天数") = 0 Else Dim cnt As Integer = (d2 - d1).TotalDays For i As Integer = 1 To cnt Dim d3 As Date = d1.adddays(i) If d3.DayOfWeek = 0 OrElse d3.DayOfWeek = 6 Then \'如果是星期天或者星期六 cnt = cnt - 1 End If Next e.DataRow("天数") = cnt + 1 End If End If
|
|
-- 作者:有点蓝
-- 发布时间:2020/12/23 9:34:00
--
没有办法判断什么时候需要手工录入,什么时候自动计算。如果有需要排除的节假日和增加的加班日,建议增加一个表格记录节假日和加班日,然后查表排除
|