反饋已提交

網絡繁忙

日期函式應用

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在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙