Foxtable(狐表)用户栏目专家坐堂 → [求助]计算两个日期列的工作日(已解决)


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

主题:[求助]计算两个日期列的工作日(已解决)

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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/12/3 17:52:00 [只看该作者]

没理得清上面的代码,单休工作日又怎么算?就是怎么计算全月天数减去周日天数.

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/12/3 17:54:00 [只看该作者]

Dim d As Date=e.Form.Controls("日期").Value
Dim start As Date = new Date(d.Year, d.Month, 1)
d = start.AddMonths(1)
Dim c As Integer = 1-start.DayOfWeek
start = start.AddDays(c)
e.Form.Controls("双休").Text = ((((d- start).TotalDays + 1) \ 7) * 6 + c + d.AddDays(-1).DayOfWeek) & "天"

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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/12/3 17:59:00 [只看该作者]

反应过来了:

Dim d As Date=e.Form.Controls("日期").Value
Dim start As Date = new Date(d.Year, d.Month, 1)
d = start.AddMonths(1)
Dim c As Integer = 1-start.DayOfWeek
start = start.AddDays(c)
e.Form.Controls("双休").Text = ((((d- start).TotalDays + 1) \ 7) * 5 + c + d.AddDays(-1).DayOfWeek) & "天"

e.Form.Controls("单休").Text = ((((d- start).TotalDays + 1) \ 7) * 6 + c + d.AddDays(-1).DayOfWeek) & "天"


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/12/3 19:04:00 [只看该作者]

 要这样写才行

 

Dim d As Date = #11/1/2014#
Dim start As Date = new Date(d.Year, d.Month, 1)
d = start.AddMonths(1)
Dim c As Integer = 1-start.DayOfWeek
start = start.AddDays(c)
If c > 0 Then c = 0
If d.AddDays(-1).DayOfWeek <> 6 Then
    c += d.AddDays(-1).DayOfWeek
End If
msgbox((((d- start).TotalDays + 1) \ 7) * 6 + c)


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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/12/3 22:15:00 [只看该作者]

Dim d As Date = #5/1/2014#
Dim start As Date = new Date(d.Year, d.Month, 1)
d = start.AddMonths(1)
Dim c As Integer = 1-start.DayOfWeek
start = start.AddDays(c)
msgbox((((d- start).TotalDays + 1) \ 7) * 5 + c + d.AddDays(-1).DayOfWeek)

5月和6月的结果不正确,分别为28天和22天,正确的应为22和21.


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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/12/3 22:16:00 [只看该作者]

其他月份都正确.

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/12/3 22:17:00 [只看该作者]

 看14楼

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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/12/3 22:21:00 [只看该作者]

5月和6月,双休日天数不一致,一个是4天,另一个是5天.其他月份,周六和周日天数相等.

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/12/3 22:23:00 [只看该作者]

14楼的代码是正确,单休日的,双休日的你对应改一些就行。


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


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/12/4 10:22:00 [只看该作者]

OK!

Dim d As Date = #5/1/2014#
Dim start As Date = new Date(d.Year, d.Month, 1)
d = start.AddMonths(1)
Dim c As Integer = 1-start.DayOfWeek
start = start.AddDays(c)
msgbox((((d- start).TotalDays + 1) \ 7) * 5 + c )
If c > 0 Then c = 0
If d.AddDays(-1).DayOfWeek <> 6 Then
    c += d.AddDays(-1).DayOfWeek
End If
msgbox((((d- start).TotalDays + 1) \ 7) * 6 + c)


 回到顶部
总数 20 上一页 1 2