Foxtable(狐表)用户栏目专家坐堂 → 关于工时计算


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

主题:关于工时计算

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


加好友 发短信
等级:幼狐 帖子:184 积分:1323 威望:0 精华:0 注册:2016/12/27 13:29:00
关于工时计算  发帖心情 Post By:2017/6/13 17:12:00 [只看该作者]

 姓名   开始休假时间   结束休假时间   休假天数  
 张三  2017-06-12 8:00:00  2017-06-12 12:00:00     0.5
 李四    2017-06-12 8:00:00  2017-06-12 17:30:00     1
 王五    2017-06-12 8:00:00  2017-06-13 17:30:00     2
 赵六    2017-06-12 13:30:00  2017-06-12 17:30:00    0.5

如上表所示。请问老师怎样可以算休假天数??麻烦老师赐教,先谢谢啦!!

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/13 19:16:00 [只看该作者]

 Dim d1 As Date = "2017-06-12 8:00:00"
Dim d2 As Date = "2017-06-13 17:30:00"
Dim day As Integer = (d2-d1).Totaldays
msgbox(day)
Dim hour As Integer = (new Date(1,1,1,d2.hour, d2.Minute, d2.Second) - new Date(1,1,1, d1.hour, d1.minute, d1.second)).Totalhours
msgbox(hour)
day = day + iif(hour<=4, 0.5, 1)
msgbox(day)
[此贴子已经被作者于2017/6/14 9:34:55编辑过]

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


加好友 发短信
等级:幼狐 帖子:184 积分:1323 威望:0 精华:0 注册:2016/12/27 13:29:00
  发帖心情 Post By:2017/6/14 8:33:00 [只看该作者]

老师,这样算只有整数天的,没有半天的,将integer改成single型算出来是1.4也不对,请问老师该怎么改??



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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/14 9:36:00 [只看该作者]

Dim d1 As Date = "2017-06-12 8:00:00"
Dim d2 As Date = "2017-06-13 12:00:00"
Dim day As Integer = (d2-d1).Totaldays
msgbox(day)
Dim hour As Integer = (new Date(1,1,1,d2.hour, d2.Minute, d2.Second) - new Date(1,1,1, d1.hour, d1.minute, d1.second)).Totalhours
msgbox(hour)
Dim days = day + iif(hour<=4, 0.5, 1)
msgbox(days)

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


加好友 发短信
等级:幼狐 帖子:184 积分:1323 威望:0 精华:0 注册:2016/12/27 13:29:00
  发帖心情 Post By:2017/6/14 9:55:00 [只看该作者]

老师,还有个特殊情况就是有上夜班的。

 姓名   开始休假时间   结束休假时间   休假天数  
  张三  2017-06-12 21:00:00   2017-06-13 8:00:00     1




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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/14 10:37:00 [只看该作者]

分开统计

 

'Dim d1 As Date = "2017-06-12 8:00:00"
'Dim d2 As Date = "2017-06-13 12:00:00"
'Dim d1 As Date = "2017-06-12 13:30:00"
'Dim d2 As Date = "2017-06-13 18:00:00"
Dim d1 As Date = "2017-06-12 21:00:00"
Dim d2 As Date = "2017-06-14 12:00:00"
If d1.Hour = 8 Then '上午
    Dim day As Integer = Math.Floor((d2-d1).Totaldays)
    Dim hour As Integer = (new Date(1,1,1,d2.hour, d2.Minute, d2.Second) - new Date(1,1,1, d1.hour, d1.minute, d1.second)).Totalhours
    Dim days = day + iif(hour<=4, 0.5, 1)
    msgbox(days)
ElseIf d1.hour = 13 Then '下午
    Dim day As Integer = Math.Floor((d2-d1).Totaldays)
    Dim hour As Integer = (new Date(1,1,1,d2.hour, d2.Minute, d2.Second) - new Date(1,1,1, d1.hour, d1.minute, d1.second)).Totalhours
    Dim days = day + iif(hour<=4, 0.5, 1)
    msgbox(days)   
ElseIf d1.hour = 21 Then '晚上
    Dim day As Integer = Math.Floor((d2-d1).Totaldays)
    Dim hour As Integer = (new Date(1,1,1,d2.hour, d2.Minute, d2.Second) - new Date(1,1,1, d1.hour, d1.minute, d1.second)).Totalhours
    Dim days = day + iif(-hour>=13, 1, iif(-hour>=9, 1.5, 2))
    msgbox(days)      
End If


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


加好友 发短信
等级:幼狐 帖子:184 积分:1323 威望:0 精华:0 注册:2016/12/27 13:29:00
  发帖心情 Post By:2017/6/14 10:53:00 [只看该作者]

谢谢色老师啦!

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


加好友 发短信
等级:幼狐 帖子:184 积分:1323 威望:0 精华:0 注册:2016/12/27 13:29:00
  发帖心情 Post By:2017/6/19 9:53:00 [只看该作者]

色老师,还有个问题请教。

表一:
 姓名   还剩年休假  
 张三   0.5 
 李四    1
 王五    1.5
 赵六    2

表二:
 姓名   开始休假时间   结束休假时间  
 张三   2017-06-13 8:00:00    2017-06-13 12:00:00   
 李四   2017-06-13 8:00:00    2017-06-13 17:30:00   
 王五   2017-06-13 8:00:00    2017-06-14 12:00:00   
 赵六   2017-06-13 8:00:00    2017-06-14 17:30:00  

例如:2017-06-13 至  2017-06-27 这段时间是用来补年休假还没休完的,最大值是15天,
请问老师,怎么根据表一的值,自动生成表二的值呢??

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/19 10:47:00 [只看该作者]

Dim d1 As Date = "2017-06-13"
Dim n As Double = 1.5
Dim d2 As Date = d1.AddDays(math.Floor(n-1))
If n - math.Floor(n) = 0.5 Then
    d2 = d2.AddHours(12)
Else
    d2 = d2.AddHours(-6)
End If
msgbox(d2)

 回到顶部