反饋已提交
網絡繁忙
在使用 FineReport 進行視覺化展示時,經常會需要對日期資料進行處理,本文介紹幾種日期型別資料的處理應用場景。
在使用公式month()或者是day()時,如果月份或日期是一位數,則顯示出來的也只有一位數,比如說 1 月 9 號,獲取月份時顯示的是 1,而不是 01,獲取日期時,顯示的是 9,而不是 09,如果需要獲取到 01 或者是 09,這個該如何透過公式實現呢?
透過公式或者自訂函式實現。
1)使用 RIGHT、CONCATENATE、MONTH 組合函式實現。
例如顯示當前時間(2021-08-31)對應的月份和天數且以兩位數字顯示。
在儲存格分別輸入:
月份公式:=right(concatenate('0',month(today())),2)
天數公式:=right(concatenate('0',day(today())),2)
公式說明:
concatenate('0',month(today()))
concatenate('0',day(today()))
right(concatenate('0',month(today())),2)
right(concatenate('0',day(today())),2)
效果查看:
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")
如果覺得公式比較複雜,則可以透過自訂函式實現,代碼如下:
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; }}
自訂函式的詳細定義步驟請參照 自訂函式。
有些情況下需要生成特定字元且帶「年月日時分秒」這樣的字串,類似 china20170726144516 這樣的編號,可以直接利用時間公式和字串連接函式來實現。
在儲存格中寫入公式:="china" FORMAT(now(), "yyyMMddhhmmss") 結果為:china20180101124516,即字串“china”後面加當前的「年月日時分秒」。
注:一般編號非必要的情況下,不要全用數字,因為在匯入匯出到 EXCEL 時數字有可能出錯。
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙