反馈已提交

网络繁忙

日期函数应用

  • 文档创建者:lu123
  • 历史版本:26
  • 最近更新:Catqiu 于 2023-06-30
  • 1. 概述

    在使用 FineReport 进行可视化展示时,经常会需要对日期数据进行处理,本文介绍几种日期类型数据的处理应用场景。

    2. 获取月份或日期的时候显示 2 位

    2.1 问题描述

    在使用公式month()或者是day()时,如果月份或日期是一位数,则显示出来的也只有一位数,比如说 1 月 9 号,获取月份时显示的是 1,而不是 01,获取日期时,显示的是 9,而不是 09,如果需要获取到 01 或者是 09,这个该如何通过公式实现呢?

    2.2 解决方案

    通过公式或者自定义函数实现。

    2.3 操作步骤

    2.3.1 公式实现

    1)使用 RIGHTCONCATENATEMONTH 组合函数实现。

    例如显示当前时间(2021-08-31)对应的月份和天数且以两位数字显示。

    在单元格分别输入:

    月份公式:=right(concatenate('0',month(today())),2)

    天数公式:=right(concatenate('0',day(today())),2)

    公式说明:

    公式
    说明

    concatenate('0',month(today()))

    concatenate('0',day(today()))

    通过 concatenate 将获取到的月份或者天数前面拼接一个 0,比如说 11 月,则显示 011,如果是 2 月,则显示 02;如果是 31 号,则显示 031

    right(concatenate('0',month(today())),2)

    right(concatenate('0',day(today())),2)

    通过 right 方法,获取右边的 2 位数字,比如说 2 月,截取 2 位数字,则为 02,比如 12 月,截取右边的两位,则为 12;比如 31号,则截取右边的两位 31

    效果查看:

    2)通过 FORMAT 来格式化字符串。

    在单元格分别输入:

    月份公式:=FORMAT(MONTH("2021-08-31"), "00")

    天数公式:=FORMAT(day("2021-08-31"), "00")

    公式说明:

    公式
    说明

    MONTH("2021-08-31")

    day("2021-08-31")

    返回月份数字:8

    返回天数数字:31

    FORMAT(MONTH("2021-08-31"), "00")

    FORMAT(day("2021-08-31"), "00")

    返回 format 格式,也就是字符串格式

    效果查看:

    2.3.2 自定义函数实现

    如果觉得公式比较复杂,则可以通过自定义函数实现,代码如下:

    package com.fr.function;
    import com.fr.script.AbstractFunction;
    public class Add0 extends AbstractFunction {      
        public Object run(Object[] args) {      
            String result = args[0].toString();      
            if(result.length() == 1)    
                result = '0' + result;    
            return result;   
        }
    }

    自定义函数的详细定义步骤请参照 自定义函数

    3. 利用日期函数生成特定编号

    有些情况下需要生成特定字符且带「年月日时分秒」这样的字符串,类似 china20170726144516 这样的编号,可以直接利用时间公式字符串拼接函数来实现。

    在单元格中写入公式:="china" + FORMAT(now(), "yyyMMddhhmmss") 结果为:china20180101124516,即字符串“china”后面加当前的「年月日时分秒」。

    注:一般编号非必要的情况下,不要全用数字,因为在导入导出到 EXCEL 时数字有可能出错。


    附件列表


    主题: 报表专题
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持