如何计算两个日期之间的工作天数

编程入门 行业动态 更新时间:2024-10-26 14:36:16

如何计算两个日期之间的工作<a href=https://www.elefans.com/category/jswz/34/1767036.html style=天数"/>

如何计算两个日期之间的工作天数

大家好,才是真的好。

很多人觉得,Notes应用中的日期处理是一大需求点,也是一大难点,为此很多人使用Java代码来进行处理。但要是学会并灵活运用Domino中的公式,很多问题会变得很简单。今天我们就来讨论两个日期之间的工作日计算问题。

在考勤类应用中,如请假表单上我们创建三个字段,现在要计算开始日期、结束日期和这两段日期之间的工作天数。

我们创建一个计算按钮,写如下图公式:

公式的具体代码如下:

Check := @If(@IsTime(StartDate) & @IsTime(EndDate); 0; @Return(0));
S := @If(StartDate < EndDate; StartDate; EndDate);
E := @If(StartDate < EndDate; EndDate; StartDate);
DiffDays := @Integer((E - S) / 86400);
WeeksBetween := @Integer(DiffDays / 7);
WS := @Weekday(S);
WE := @Weekday(E);
Adjust := @If(WS = WE; 0; WS = 1 & WE = 7; 5; WS = 7 & WE = 1;0; WE = 7 | WE = 1; 6-WS; WS = 7 | WS = 1; WE-1;WE > WS; WE-WS; 5+WE-WS);
(WeeksBetween * 5) + Adjust

解释一下,该段公式是这样执行的:

首先我们使用Check := @If(@IsTime(StartDate) & @IsTime(EndDate); 0; @Return(0));语句来确认StartDate和EndDate是一个时间日期值,因为用户输入什么值都是有可能的;

其次使用语句S := @If(StartDate < EndDate; StartDate; EndDate);

E := @If(StartDate < EndDate; EndDate; StartDate);

判断EndDate要比StartDate晚,并将这两个变量分别赋值给E和S临时变量;

接着我们使用语句DiffDays := @Integer((E - S) / 86400);比较一下StartDate和EndDate之间有多少天,再用WeeksBetween := @Integer(DiffDays / 7)来计算StartDate和EndDate之间有多少周;

然后使用WS := @Weekday(S)和WE := @Weekday(E)语句来得到StartDate 和EndDate分别是星期几;

紧接着就是重要重要的语句

Adjust := @If(WS = WE; 0; WS = 1 & WE = 7; 5; WS = 7 & WE = 1;

0; WE = 7 | WE = 1; 6-WS; WS = 7 | WS = 1; WE-1;WE > WS; WE-WS; 5+WE-WS);

设置一个调整值Adjust;Adjust的值有很多种情况,比如StartDate 和EndDate的星期几是一样的,那么Adjust就是0;如果StartDate是周日(即 WS = 1 )而EndDate是周六(WE = 7),则StartDate 和EndDate之间间隔5天;以此类推……

最后就是StartDate 和EndDate 日期之间的真正的工作天数:(WeeksBetween * 5) + Adjust;即用两个日期之间的周数加上调整值Adjust即可。

你可以计算一下,如下图:

当然,这里面你可能发现了一个问题,这里的公式计算中,开始日期和结束日期不包含一个其中,例如开始日期是4月25号,结束日期是4月26号,那么只算1个工作日,如下图:

这是个数栅栏的问题,栅栏的杆子和格子数目肯定不一样,对吧?你要是觉得开始日期和结束日期都要算上,只需要修改一下Adjust语句即可。

不过今天我们就讲到这里吧。

更多精彩内容,请关注微信公众号:协作者

更多推荐

如何计算两个日期之间的工作天数

本文发布于:2023-06-27 19:08:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/915707.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:天数   两个   日期   工作

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!