历史版本7 :常见日期函数 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1.描述编辑

在对日期型数据进行操作时,经常会遇到要获取当前日期,获取当前时间,获取日期的年月日等等操作,下面我们就来介绍下日期的常用处理函数。

2.转化日期编辑

通过date(year,month,day)进行转化日期。
在单元格中输入:=date(2011,1,10),其返回值为2011-01-10。
若月份大于12将从年的一月份开始往上累加,如在单元格中输入:=date(2011,13,10),其返回值为2012-01-10。
注:日期同理,若超过最大天数,会从月的一号开始向上累加。

3.获取当前日期、时间编辑

3.1 当前日期(年月日)
today()即获取当前日期。
在单元格中输入=today(),若系统日期是2011年11月11号,则返回值为2011-11-11。
3.2 当前时间(时分秒)
now()即获取当前日期与时间。
在单元格中输入=now(),返回值类型为日期,yyyy-MM-dd hh:mm:ss;如:now(),格式:常规,返回的值2012-06-20 14:55:57。

4.获取日期的年月日编辑

分别通过year(),month(),day()这三个函数来获取日期的年月日。
获取年份:在单元格中输入=year("2011-11-11"),返回值为2011。
获取月份:在单元格中输入=month("2011-11-11"),返回值为11。
获取日期:在单元格中输入=day("2011-11-11"),返回值为11。

5.将日期格式化编辑

可以使用todate()函数将任何日期形式的数据转化为日期型,或者使用format()函数可以转化成任何日期形式的数据。
5.1 将日期格式的字符串转化成日期型
todate()可以将任何日期形式的数据转化成日期型即:yyyy-MM-dd型数据。
在单元格中输入=todate("2011/11/11"),返回值为2011-11-11。
在单元格中输入=todate("2/15/11","MM/dd/yy"),返回值为2011-02-15。
5.2 将日期型数据转化成其他格式的日期形式
format()可以将日期型数据转化成其他形式的数据。
在单元格中输入=format("2/15/2011","dd/MM/yyyy"),返回值为15/02/2011。
在单元格中输入=format("2/15/2011","yyyy-MM-dd"),返回值为2011-02-15。

6.日期的加减编辑

可以通过datedelta()monthdelta()yeardelta()这三个函数来实现对日期的加减。
日期的加减:在单元格中输入=datedelta(today(),-1),返回当前日期前一天的日期,若系统日期是2011-11-11,则返回值为2011-11-10。
注:公式中的-1表示减一天若是正数则表示加相应的天数。
月份的加减:在单元格中输入=monthdelta(today(),-1),返回当前日期上一个月的日期,若系统时间是2011-11-11,则返回值为2011-10-11。
年份的加减:在单元格中输入=yeardelta(today(),-1),返回当前日期上一年的日期,若系统日期是2011-11-11,则返回值为2010-11-11。

7.获取某月的第几天编辑

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

8.阳历转化成农历编辑

可以通过lunar(year,day,month)函数来实现将阴历转化成公历。
在单元格中输入:=lunar(2011,10,11),返回的是2011年10月11号对应的农历日期即返回值为辛卯年九月十五。
在单元格中输入:=lunar(2011,10,1),返回的是2011年10月1号对应的农历日期即返回值为辛卯年九月初五。

注:lunar中支持的时间段为1900-2049年。

9.获取某月的当月、上月、去年同期等编辑

参数名为:$date,如当前日期格式为:201506
9.1 当月
${date} 
9.2 去年同期
CONCATENATE(YEAR($date,"yyyyMM") - 1, IF(MONTH($date, "yyyyMM") < 10,CONCATENATE(0, MONTH($date, "yyyyMM")), MONTH($date,"yyyyMM"))) 
9.3 上上月
CONCATENATE(YEAR($date, "yyyyMM"), IF(MONTH($date,"yyyyMM") - 2 < 10, CONCATENATE(0, MONTH($date, "yyyyMM")- 2), MONTH($date, "yyyyMM") - 2))
9.4 上月
CONCATENATE(YEAR($date, "yyyyMM"), IF(MONTH($date,"yyyyMM") - 1 < 10, CONCATENATE(0, MONTH($date,"yyyyMM") - 1), MONTH($date, "yyyyMM") - 1))
9.5 去年同期上月
CONCATENATE(YEAR($date, "yyyyMM") - 1, IF(MONTH($date,"yyyyMM") - 1 < 10, CONCATENATE(0, MONTH($date,"yyyyMM") - 1), MONTH($date, "yyyyMM") - 1))

注:
格式化当前日期 YEAR($date, "yyyyMM") 
格式化当前日期,求出去年年份值 YEAR($date, "yyyyMM") – 1
格式化当前日期,求出月份值 MONTH($date, "yyyyMM") 
格式化当前日期,求出上月月份值 MONTH($date, "yyyyMM")-1 
格式化当前日期,求出上上月月份值 MONTH($date, "yyyyMM")-2 
如果月份小于2位数,也就是10的话,要单独处理月份值:
 IF(MONTH($date, "yyyyMM") < 10, CONCATENATE(0,MONTH($date, "yyyyMM")), MONTH($date, "yyyyMM")) 
如果是上月月的话,应该是:
 IF(MONTH($date, "yyyyMM")-1 < 10, CONCATENATE(0,MONTH($date, "yyyyMM")-1), MONTH($date, "yyyyMM")-1)   注:该代码有bug,例如2018年1月的上月,1-1后,月份为0了!
最后对处理后的年份和月份利用函数CONCATENATE进行拼接即可。