如何用 Notion 计算两日期之间的工作日数(仅去除周末)
Notion 最近不知道什么时候更新了公式,新增了不少函数,能用来计算的东西也更多了,今天刚好在优化一个业务的数据库,几经折腾摸索出了算两日期间工作日数的方法。
公式如下,复制到 Notion 页面里就会变成 Notion 代码块、高亮规则也是 Notion 公式的,直接复制里面的部分可以用在 formula 属性中。
```notion
lets(
date1_2monday, dateSubtract(prop("date1"), day(prop("date1")) - 1, "days"),
date2_2sunday, dateAdd(prop("date2"), 7 - day(prop("date2")), "days"),
full_weekdays, ceil(dateBetween(prop("date2_2sunday"), prop("date1_2monday"), "days") / 7) * 5,
date1_pre_weekdays, if(day(prop("date1")) < 5, day(prop("date1")), 5),
date2_suf_weekdays, if(day(prop("date2")) < 5, 5 - day(prop("date2")), 0),
full_weekdays - date1_pre_weekdays - date2_suf_weekdays
)
```
大概介绍下原理:
1. 将两日期分别向前后偏移,date1 移动到当周的周一(date1_2monday)、date2 移动到当周的周末(date2_2sunday)
2. 计算首尾日期偏移后的工作日跨度,算天数差,再转为周数向上取整
3. 计算首尾偏移部分的工作日数,分开处理小于周五的和大于周五的两种情况
4. 算出最终的工作日数,用第 2 步结果减去第 3 步结果
初步用下来感觉还挺绕的,好在现在的公式支持多行了,而且有了 let() 和 lets() 函数,一些需要后续计算用到的变量也可以提前定义,压缩文本量,体验比以前好了很多。
就是希望官方能早日出个单独的函数,以后要能直接计算就好了。
食品经营许可证 JY11105052461621
©2024 GAMECORES
评论区
共 条评论热门最新