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

 需求背景

        看到这个标题,可能好些人懵了,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({试算日期},{相差天数})

最后,上图!

致远OA表单自定义函数(计算N年后今天的日期 )_第1张图片

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

 

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

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

 

你可能感兴趣的:(致远表单公式,html5)