1. 概述
1.1 版本
报表服务器版本 | 功能变更 |
---|---|
11.0 | - |
1.2 问题描述
已知函数中有 WEEK() 可获取日期所在一年中的第几周,如何获取日期在当月的第几周呢?
1.3 实现思路
使用 DATEINMONTH() 获取日期所在月份的第一天日期,使用 WEEKDAY() 获取第一天的星期数,加上查询日期的天数,除以 7 向上取整,即为日期在当月的第几周。
2. 操作步骤
常见的日期参考:常见日期处理函数
1. 在 A1 单元格插入公式:RANGE(date(2018, 12, 1), today()),并设置单元格的扩展方向为纵向,如下图所示:
2. 在 B1 单元格插入公式:ROUNDUP((DAY(A1) + (IF(WEEKDAY(DATEINMONTH(A1, 1)) = 0, 7, WEEKDAY(DATEINMONTH(A1, 1)))) - 1) / 7, 0),如下图所示:
公式 | 说明 |
---|---|
WEEKDAY(DATEINMONTH(A1, 1)) | 日期所属月份第一天对应的星期数 |
IF(WEEKDAY(DATEINMONTH(NOW(), 1)) = 0, 7, WEEKDAY(DATEINMONTH(NOW(), 1))) | 如果日期所属月份第一天对应的星期数为星期天,返回 7,否则返回对应的星期数 |
DAY(A1) | 返回日期中的日 |
ROUNDUP((DAY(A1) + (IF(WEEKDAY(DATEINMONTH(A1, 1)) = 0, 7, WEEKDAY(DATEINMONTH(A1, 1)))) - 1) / 7, 0) | 查询日期的天数加上日期所属月份第一天对应的星期数,除以 7 向上取整 |
注:此公式计算结果以星期一为一周的计算起始时间,如需从星期天开始计算,将公式修改为:ROUNDUP((DAY(A1) + (IF(WEEKDAY(DATEINMONTH(A1, 1)) = 0, 7, WEEKDAY(DATEINMONTH(A1, 1))))) / 7, 0)
3. 效果查看
保存模板,点击分页预览。
3.1 PC 端效果
3.2 移动端效果
App 与 HTML5 效果相同,如下图所示:
4. 模板下载
已完成的模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\function\使用公式计算日期在当月中的第几周.cpt
点击下载模板:使用公式计算日期在当月中的第几周.cpt