致远OA表单自定义函数(计算N年后今天的日期 )

本文分享了一种使用Groovy脚本在表单中根据档案的归档日期和保存年限自动计算销毁日期的方法。通过设置试算日期、试算日期年和试算日期误差天数等参数,考虑到闰年的因素,可以精确计算出N年后的同月同日。然而,此方法适用于保存年限不超过110年的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 需求背景

        看到这个标题,可能好些人懵了,N年后的今天这么简单,还需要计算么?
的确,人脑算很简单,但是咱们的表单中……


        前日,有人跟大表哥来电,就说客户要根据档案的归档日期和保存年限,自动计算出档案的销毁日期。说白了,就是要计算出N年后同月同日那天的日期。貌似简单,可是在咱们表单中,目前还真没有找到快捷的方法计算出来,就因为公历中有闰年。
但是,问题难不倒咱,试试咯。结果,兜兜转转,还是能得到想要的结果。

        根据现有的函数和计算方式,需要增加3个参数:试算日期,试算日期年,试算日期误差天数(实际使用时,这3个字段请勿显示在表单视图页面中)。

计算公式设置如下:
1.试算日期:试算日期等于存档日期加上保存年限乘以365。
  calcDate({存档日期},{保存年限}*365)

2.试算日期年:取出试算日期的年度(用来判断这年是否闰年,注意2100年是平年)。
  year({试算日期})

3.试算日期误差天数:用来计算试算日期和真实的销毁日期之间相差多少天。

如果

month({存档日期})=month({试算日期})

则为

day({存档日期})-day({试算日期})

如果

month({存档日期})<>month({试算日期}) and (month({试算日期})=1 or month({试算日期})=3 or month({试算日期})=5 or month({试算日期})=7 or month({试算日期})=8 or month({试算日期})=10 or month({试算日期})=12)

则为

31-day({试算日期})+day({存档日期})

如果

month({存档日期})<>month({试算日期}) and (month({试算日期})=4 or month({试算日期})=6 or month({试算日期})=9 or month({试算日期})=11)

则为

30-day({试算日期})+day({存档日期})

如果

month({存档日期})<>month({试算日期}) and month({试算日期})=2 and getMod({试算日期年份},4)=0 and {试算日期年份}<>2100

则为

29-day({试算日期})+day({存档日期})

如果

month({存档日期})<>month({试算日期})and month({试算日期})=2 and (getMod({试算日期年份},4)<>0 or {试算日期年份}=2100)

则为

28-day({试算日期})+day({存档日期})

 

 

否则为

0

 

4.销毁日期:用试算日期加上误差天数。

calcDate({试算日期},{相差天数})

最后,上图!

        对了,这个方法可不是万能的!当保存年限不大于110时,试算日期误差天数计算才是正确的,即上述计算公式只适用于保存年限在110年及以内的场景。

 

以上就是致远OA表单计算N年后今天的日期的分享,脚本用的语言是groovy 。

技术无限,分享有限,欢迎交流 ~ 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

致远OA开发实施运维支持

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值