1. 概述
在对日期型数据进行操作时,经常会遇到要获取当前日期、获取当前时间、获取日期的年月日等等操作。
本文介绍 FineReport 常用的处理日期函数。
注:当日期型公式作为参数在超链中传参时,将会传过去带有时分秒的原始值。
1.1 视频教程
2. 获取指定日期时间
实现内容 | 公式 | 结果 | |
---|---|---|---|
获取当前时间 | |||
获取当前日期(年月日) | =today() | 若系统日期是 2011 年 11 月 11 号,则返回值为 2011-11-11 | |
获取当前时间(时分秒) | =now() | 若单元格格式为常规,系统日期是 2012 年 06 月 20 号,返回的值 2012-06-20 14:55:57 | |
显示当前月份所在季度 | =roundup(month(today())/3) | 若系统日期为 2011 年 11 月 11 号,则返回值为 4 | |
获取日期的年、月、日 | |||
获取年份 | =year("2011-11-11") | 返回值为 2011 | |
获取月份 | =month("2011-11-11") | 返回值为 11 | |
获取日期 | =day("2011-11-11") | 返回值为 11 | |
获取某年/季度/月/周的第几天 | |||
DATEINYEAR(date, number) 获取某年的第几天 | 当前年的第一天 | =dateinyear(today(),1) | 若系统日期是 2011-11-11,则返回值为 2011-01-01 |
当前年的最后一天 | =dateinyear(today(),-1) | 若系统日期是 2011-11-11,则返回值为 2011-12-31 | |
DATEINQUARTER(date, number) 获取某季度的第几天 | 当前季度的第一天 | =dateinquarter(today(),1) | 若系统日期是 2011-11-11,则返回值为 2011-10-01 |
当前季度的最后一天 | =dateinquarter(today(),-1) | 若系统日期是 2011-11-11,则返回值为 2011-12-31 | |
DATEINMONTH(date, number)获取某月的第几天 | 当前月的第一天 | =dateinmonth(today(),1) | 若系统日期是 2011-11-11,则返回值为 2011-11-01 |
当前月的最后一天 | =dateinmonth(today(),-1) | 若系统日期是 2011-11-11,则返回值为 2011-11-30 | |
DATEINWEEK(date, number)来获取某周的第几天 | 当前周的第一天 | =dateinweek(today(),1) | 若系统日期是 2011-11-11,则返回值为 2011-11-07 |
当前周的最后一天 | =dateinweek(today(),-1) | 若系统日期是 2011-11-11,则返回值为 2011-11-13 | |
获取相对于当前月份的某时间 | |||
当月 | =MONTH(today()) | 若系统日期是 2011-11-11,则返回值为 11 | |
去年同期 | =YEARDELTA(today(),-1) | 若系统日期是 2011-11-11,则返回值为 2010-11-11 | |
上上月 | =date(year(today()),MONTH(today())-2,day(today())) | 若系统日期是 2011-11-11,则返回值为 2011-09-11 | |
上月 | =date(year(today()),MONTH(today())-1,day(today())) | 若系统日期是 2011-11-11,则返回值为 2011-10-11 | |
去年同期上月 | =date(year(today())-1,MONTH(today())-1,day(today())) | 若系统日期是 2011-11-11,则返回值为 2010-10-11 | |
上月月末 | =ENDOFMONTH(TODAY(),-1) | 若系统日期是 2011-11-11,则返回值为 2011-10-31 | |
上月月初 | =DATEINMONTH(MONTHDELTA(TODAY(),-1),1) | 若系统日期是 2011-11-11,则返回值为 2011-10-01 | |
上月年月日时分秒 | =date(year(left(NOW(),10)),MONTH(left(NOW(),10)) - 1,day(left(NOW(),10))) + RIGHT(NOW(),9) | 若系统日期是 2011-11-01 13:34:42 ,则返回值为2011-10-01 13:34:42 |
3. 时间的转化
实现内容 | 公式 | 结果 | |
---|---|---|---|
数据类型转化 | |||
将日期形式的「字符串」转化成「时间型」 todate() 可以将任何日期形式的数据转化成时间型即:yyyy-MM-dd | =todate("2011/11/11") | 若系统日期是 2011 年 11 月 11 号,则返回值为 2011-11-11 | |
将时间型数据转化成其他格式的日期形式 format() | =format("2/15/2011","dd/MM/yyyy") | 返回值为 15/02/2011 | |
阳历转化为农历 | |||
阳历转化成农历 | =lunar(2011,10,11) | 返回的是 2011 年 10 月 11 号对应的农历日期即返回值为辛卯年九月十五 | |
=lunar(2011,10,1) | 返回的是 2011 年 10 月 1 号对应的农历日期即返回值为辛卯年九月初五 |
4. 日期的加减计算
可以通过 datedelta()、monthdelta()、yeardelta() 这三个函数来实现对日期的加减。
实现内容 | 公式 | 结果 | |
---|---|---|---|
数据类型转化 | |||
日期的加减 | =datedelta(today(),-1) 注:公式中的 -1 表示减一天,若是正数则表示加相应的天数。 | 返回当前日期前一天的日期,若系统日期是 2011-11-11,则返回值为 2011-11-10 注:若返回的日期格式为类似Tue Jul 29 00:00:00 CST 2008。可以使用FORMAT函数嵌套,例如FORMAT(DATEDELTA("2008-08-08",-10), "MM/dd/yyyy")。 | |
月份的加减 | =monthdelta(today(),-1) | 返回当前日期上一个月的日期,若系统时间是 2011-11-11,则返回值为 2011-10-11 | |
年份的加减 | =yeardelta(today(),-1) | 返回当前日期上一年的日期,若系统日期是 2011-11-11,则返回值为 2010-11-11 |