想根据日期的值显示周几

通过设置计算公式,可根据日期的值显示周几。

准备

计算公式

在单行文本框字段的设置对话框中,勾选“自动计算”,设置以下的计算公式:

IF( ( ( (日期 / 60 / 60 / 24) - 0) / 7 ) - ROUNDUP(( ( (日期 / 60 / 60 / 24) - 0) / 7 ) , 0) = 0 , "周四",
  IF( ( ( (日期 / 60 / 60 / 24) - 1) / 7 ) - ROUNDUP(( ( (日期 / 60 / 60 / 24) - 1) / 7 ) , 0) = 0 , "周五",
    IF( ( ( (日期 / 60 / 60 / 24) - 2) / 7 ) - ROUNDUP(( ( (日期 / 60 / 60 / 24) - 2) / 7 ) , 0) = 0 , "周六",
      IF( ( ( (日期 / 60 / 60 / 24) - 3) / 7 ) - ROUNDUP(( ( (日期 / 60 / 60 / 24) - 3) / 7 ) , 0) = 0 , "周日",
        IF( ( ( (日期 / 60 / 60 / 24) - 4) / 7 ) - ROUNDUP(( ( (日期 / 60 / 60 / 24) - 4) / 7 ) , 0) = 0 , "周一",
          IF( ( ( (日期 / 60 / 60 / 24) - 5) / 7 ) - ROUNDUP(( ( (日期 / 60 / 60 / 24) - 5) / 7 ) , 0) = 0 , "周二",
            IF( ( ( (日期 / 60 / 60 / 24) - 6) / 7 ) - ROUNDUP(( ( (日期 / 60 / 60 / 24) - 6) / 7 ) , 0) = 0 , "周三","不存在"
            )
          )
        )
      )
    )
  )
)

解释

kintone的计算公式是将“日期”或“日期与时间”的值以UNIX时间,即从1970年1月1日上午0点的协调世界时(UTC)开始经过的秒数进行处理。
日期、时间、日期与时间字段的值的处理方法

因此计算公式的原理为将输入日期的值转换为经过的天数,再将经过天数的值除以1周的天数“7”,根据余数显示周几,从而实现根据日期的值显示周几的功能。

例)

  • 输入2021年4月1日时
    从1970年1月1日(周四)起,经过了18718天。
    18718除以7,商2674余0。
    这就说明,2021年4月1日正好是从1970年1月1日(周四)算起,2674周之后的周四。

也就是说当输入日期的经过天数除以7余0时,为周四。

  • 输入2021年4月2日时
    从1970年1月1日(周四)起,经过了18719天。
    18718除以7,商2674余1。
    这就说明,2021年4月2日正好是从1970年1月1日(周四)算起,2674周加1天之后的周五。
    也就是说当输入日期的经过天数除以7余1时,为周五。

通过上述示例的思路,可得出输入日期的经过天数的余数与周几的关系如下:

A)经过天数除以7余0时:周四
B)经过天数除以7余1时:周五
C)经过天数除以7余2时:周六
D)经过天数除以7余3时:周日
E)经过天数除以7余4时:周一
F)经过天数除以7余5时:周二
G)经过天数除以7余6时:周三

但kintone的计算功能并不能求得余数。
因此,需转变为以下不用余数的方法:

A)经过天数-0的值除以7余0时:周四
B)经过天数-1的值除以7余0时:周五
C)经过天数-2的值除以7余0时:周六
D)经过天数-3的值除以7余0时:周日
E)经过天数-4的值除以7余0时:周一
F)经过天数-5的值除以7余0时:周二
G)经过天数-6的值除以7余0时:周三

当有余数时即说明计算结果中含有小数,将上述的“A)”~“G)”中“除以7的值”和“把除以7的值代入ROUNDUP函数得出的结果”相减,当结果为0时显示相应的周几。
[ROUND函数]对数值进行四舍五入、向上舍入、向下舍入