FineReport----日期处理

DAYSOFMONTH(date):返回当日的该月天数

DATEDELTA(Today(),-1):昨天

MONTHDELTA

返回前几个月、后几个月同天日期 

MONTHDELTA(date,delta):返回指定日期date后delta个月的日期。
示例:
MONTHDELTA("2008-08-08", 4)等于2008-12-08。

上个月某一天

取上个月第一天公式:DATEINMONTH(today()-day(today()),1)

取上个月最后一天公式:DATEINMONTH(today()-day(today()),-1)

取上个月29天 :DATEINMONTH(today() - day(today()), 29)

today()-day(today())表示当前日期减去当前月的天数,就是上个月的日期
1某月的第一天
-1某月的最后一天

获取某个月的第几天 

可以通过dateinmonth(date, number)来获取某月的第几天。
在单元格中输入=dateinmonth(today(),1),返回当前月的第一天,若系统日期是2011-11-11,则返回值为2011-11-01。
在单元格中输入=dateinmonth(today(),-1),返回当前月的最后一天,若系统日期是2011-11-11,则返回值为2011-11-30。
 

 

 两个指定日期间的天数、月数或年数

DATEDIF(start_date,end_date,unit):返回两个指定日期间的天数、月数或年数。
Start_date:代表所指定时间段的初始日期。
End_date:代表所指定时间段的终止日期。
Unit:函数返回信息的类型。
若unit=“Y”,则DATEDIF返回指定时间段的年差数。
若unit=“M”,则DATEDIF返回指定时间段的月差数。
若unit=“D”,则DATEDIF返回指定时间段的日差数。
若unit=“MD”,则DATEDIF忽略年和月,返回指定时间段的日差数。
若unit=“YM”,则DATEDIF忽略年和日,返回指定时间段的月差数。
若unit=“YD”,则DATEDIF忽略年,返回指定时间段的日差数。
示例:
DATEDIF("2001/2/28","2004/3/20","Y")等于3,即在2001年2月28日与2004年3月20日之间有3个整年。
DATEDIF("2001/2/28","2004/3/20","M")等于36,即在2001年2月28日与2004年3月20日之间有36个整月。
DATEDIF("2001/2/28","2004/3/20","D")等于1116,即在2001年2月28日与2004年3月20日之间有1116个整天。
DATEDIF("2001/2/28","2004/3/20","MD")等于8,即忽略月和年后,2001年2月28日与2004年3月20日的差为8天。
DATEDIF("2001/1/28","2004/3/20","YM")等于2,即忽略日和年后,2001年1月28日与2004年3月20日的差为2个月。
DATEDIF("2001/2/28","2004/3/20","YD")等于21,即忽略年后,2001年2月28日与2004年3月20日的差为21天。
 
 
例子
1、如日期为29、30、31 ,返回当月29号,如日期1~28,返回上个月的29
if(day($日期)='29' || day($日期)='30' ||  day($日期)='31',dateinmonth($日期, 29),DATEINMONTH(MONTHDELTA($日期,-1),29))
 
2、如两个日期之间的持续天数
DATEDIF(if(day($日期)='29' || day($日期)='30' ||  day($日期)='31',dateinmonth($日期, 29),DATEINMONTH(MONTHDELTA($日期,-1),29)),$日期,"D")+1
 

日期格式转换

FORMAT(TODATE($日期,"yyyy年MM月"),"yyyy年MM月")
原文地址:https://www.cnblogs.com/siyunianhua/p/14249887.html