Foxtable(狐表)用户栏目专家坐堂 → 如何计算工作日天数?


  共有2517人关注过本帖树形打印复制链接

主题:如何计算工作日天数?

帅哥哟,离线,有人找我吗?
xhydxs
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:249 积分:2232 威望:0 精华:0 注册:2016/10/29 14:17:00
如何计算工作日天数?  发帖心情 Post By:2020/12/22 15:46:00 [只看该作者]

例如:我想计算2020年12月1日至2020年12月22日的工作日天数,怎么写代码啊?
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20201222154509.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
洮沙
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:804 积分:6903 威望:0 精华:0 注册:2017/8/31 12:07:00
回复:(xhydxs)如何计算工作日天数?  发帖心情 Post By:2020/12/22 15:52:00 [只看该作者]

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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:249 积分:2232 威望:0 精华:0 注册:2016/10/29 14:17:00
  发帖心情 Post By:2020/12/22 15:54:00 [只看该作者]

要去除周六和周日哦图片点击可在新窗口打开查看


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107523 积分:546900 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/22 15:59:00 [只看该作者]

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=150479&skin=0

 回到顶部
帅哥哟,离线,有人找我吗?
xhydxs
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:249 积分:2232 威望:0 精华:0 注册:2016/10/29 14:17:00
有时“天数”我需要手动输入数据,这段代码怎么改啊?  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:249 积分:2232 威望:0 精华:0 注册:2016/10/29 14:17:00
  发帖心情 Post By: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


 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107523 积分:546900 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/23 9:34:00 [只看该作者]

没有办法判断什么时候需要手工录入,什么时候自动计算。如果有需要排除的节假日和增加的加班日,建议增加一个表格记录节假日和加班日,然后查表排除

 回到顶部