3.2.5 计算当前日期在本年度年内的周数

在部分应用场景中,我们需要计算当前日期在本年度内的周数,比如以周为维度填写周计划。目前系统并未提供专门的函数用于计算,但通过巧妙地设置公式就能解决该计算问题。

首先需要说明一下,每周的起点不同的国家有所不同,但主要是星期一或星期日。国际标准ISO8601已将星期一定为一周的第一天,我国是将星期一作为一周的第一天(以下的算法均以此进行),但不少西方国家将星期日作为一周的第一天。

注意:微软的Winowds简体中文版在7.0及之前(包括95、98、Me、2000、XP、Vista、7等),系统日历中星期日居首;在8.0及之后(包括8.0、8.1、10),系统日历中星期一居首。

其次,每年的第一天未必就是本年第一周的开始。我国的工作日为星期一到星期五,因此如果某年的第一天是星期四、星期五、星期六或星期日,则这一天所在的周通常被认为是上一年的最末一周;而如果某年的第一天是星期一、星期二或星期三,则这一天所在的周通常被认为是本年度的第一周。

基于上述法则,我们在表单中设置相关字段和计算公式如下。注意:年初日期、本年已过天数这两个字段主要用作计算参数,可在视图中删除,避免在运行时显示。

QQ截图20181017145609.png

“本年已过天数”字段设置计算公式:differDate( {当前日期} , {年初日期} )

“所在周数”字段设置计算公式如下图。注意:getInt为“取整数”函数,其括号内的计算公式需要手工编写,编写时不允许有任何空格;如果以星期日作为一周的第一天,则调整下方计算公式设置中的计算条件即可(将第1个条件的=1改成=0,第2个条件的=2改成=1,以此类推)。

QQ截图20181017150029.png

QQ截图20181017150123.png

在表单的操作设置中,给“年初日期和“当前日期”附上初始值。

QQ截图20181017152355.png

运行效果如下。

QQ截图20181017152514.png