Excel 基础日期函数 #

函数概览 #

日期函数用于处理日期和时间数据,是财务计算、项目管理、报表分析的重要工具。

text
┌─────────────────────────────────────────────────────────────┐
│                    基础日期函数一览                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  TODAY     当前日期    =TODAY()              → 2024/1/15    │
│  NOW       当前时间    =NOW()                → 2024/1/15 14:30│
│  DATE      创建日期    =DATE(2024,1,15)      → 2024/1/15    │
│  YEAR      提取年份    =YEAR(A1)             → 2024         │
│  MONTH     提取月份    =MONTH(A1)            → 1            │
│  DAY       提取日期    =DAY(A1)              → 15           │
│  WEEKDAY   星期几      =WEEKDAY(A1)          → 2            │
│  WEEKNUM   第几周      =WEEKNUM(A1)          → 3            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Excel 日期系统 #

日期序列号 #

Excel 将日期存储为序列号:

text
1900年1月1日 = 1
1900年1月2日 = 2
...
2024年1月1日 = 45292

时间序列号 #

时间存储为小数部分:

text
0.0 = 00:00:00(午夜)
0.5 = 12:00:00(中午)
0.99999 = 23:59:59

日期时间组合 #

text
2024年1月15日 14:30 = 45292.604167

TODAY 函数 #

语法 #

excel
=TODAY()

返回当前日期(不包含时间)
每次打开工作簿或重新计算时更新

基本用法 #

excel
=TODAY()                    → 2024/1/15(当前日期)
=TODAY()+1                  → 明天
=TODAY()-1                  → 昨天
=TODAY()+7                  → 一周后
=TODAY()+30                 → 30天后

实际应用 #

excel
计算年龄:
=YEAR(TODAY())-YEAR(A1)

计算距今天数:
=TODAY()-A1

计算本年已过天数:
=TODAY()-DATE(YEAR(TODAY()), 1, 1)+1

判断是否过期:
=IF(A1<TODAY(), "已过期", "未过期")

实际示例 #

text
合同管理:
    A            B          C
1   合同到期日   状态       剩余天数
2   2024/3/15    =IF(A2<TODAY(), "已过期", "有效")
                           =A2-TODAY()  → 60

NOW 函数 #

语法 #

excel
=NOW()

返回当前日期和时间
每次打开工作簿或重新计算时更新

基本用法 #

excel
=NOW()                      → 2024/1/15 14:30:25
=NOW()+1                    → 明天此时
=NOW()+1/24                 → 一小时后
=NOW()+1/24/60              → 一分钟后

TODAY vs NOW #

excel
=TODAY()    → 2024/1/15 00:00:00(只有日期)
=NOW()      → 2024/1/15 14:30:25(日期和时间)

提取当前日期:
=INT(NOW())  或  =TODAY()

提取当前时间:
=NOW()-TODAY()

实际应用 #

excel
记录创建时间:
在单元格中输入 =NOW(),然后复制粘贴为值

计算耗时:
=NOW()-开始时间

时间戳:
=TEXT(NOW(), "yyyymmdd_hhmmss")

DATE 函数 #

语法 #

excel
=DATE(year, month, day)

参数:
- year: 年份
- month: 月份
- day: 日期

基本用法 #

excel
=DATE(2024, 1, 15)          → 2024/1/15
=DATE(2024, 13, 1)          → 2025/1/1(月份自动进位)
=DATE(2024, 1, 32)          → 2024/2/1(日期自动进位)
=DATE(2024, 0, 1)           → 2023/12/1(月份为0表示上年12月)
=DATE(2024, 1, 0)           → 2023/12/31(日期为0表示上月最后一天)

实际应用 #

excel
从年月日字段组合日期:
=DATE(A1, B1, C1)

本月第一天:
=DATE(YEAR(TODAY()), MONTH(TODAY()), 1)

本月最后一天:
=DATE(YEAR(TODAY()), MONTH(TODAY())+1, 0)

本年第一天:
=DATE(YEAR(TODAY()), 1, 1)

本年最后一天:
=DATE(YEAR(TODAY())+1, 1, 0)

实际示例 #

text
从分离字段创建日期:
    A        B        C        D
1   年       月       日       日期
2   2024     1        15       =DATE(A2, B2, C2)  → 2024/1/15

YEAR、MONTH、DAY 函数 #

YEAR 函数 #

excel
=YEAR(date)

返回日期的年份
excel
=YEAR(DATE(2024, 1, 15))    → 2024
=YEAR(TODAY())              → 当前年份
=YEAR("2024/1/15")          → 2024

MONTH 函数 #

excel
=MONTH(date)

返回日期的月份(1-12)
excel
=MONTH(DATE(2024, 1, 15))   → 1
=MONTH(TODAY())             → 当前月份
=MONTH("2024/1/15")         → 1

DAY 函数 #

excel
=DAY(date)

返回日期的天数(1-31)
excel
=DAY(DATE(2024, 1, 15))     → 15
=DAY(TODAY())               → 当前日期
=DAY("2024/1/15")           → 15

实际应用 #

excel
提取出生年份:
=YEAR(A1)

判断是否为生日月:
=IF(MONTH(A1)=MONTH(TODAY()), "生日月", "")

计算季度:
=ROUNDUP(MONTH(A1)/3, 0)

判断是否为上半年:
=IF(MONTH(A1)<=6, "上半年", "下半年")

实际示例 #

text
员工信息:
    A            B          C          D
1   入职日期     年份       月份       季度
2   2020/3/15    =YEAR(A2)  =MONTH(A2) =ROUNDUP(MONTH(A2)/3,0)
                → 2020     → 3        → 1

WEEKDAY 函数 #

语法 #

excel
=WEEKDAY(date, [return_type])

参数:
- date: 日期
- return_type: 返回类型(可选)
  - 1 或省略:周日=1,周六=7
  - 2:周一=1,周日=7
  - 3:周一=0,周日=6

基本用法 #

excel
=WEEKDAY(DATE(2024, 1, 15))     → 2(周一,默认类型)
=WEEKDAY(DATE(2024, 1, 15), 1)  → 2(周日=1)
=WEEKDAY(DATE(2024, 1, 15), 2)  → 1(周一=1)
=WEEKDAY(DATE(2024, 1, 15), 3)  → 0(周一=0)

实际应用 #

excel
显示星期几:
=TEXT(A1, "aaaa")              → "星期一"
=TEXT(A1, "aaa")               → "一"

判断是否为周末:
=IF(WEEKDAY(A1, 2)>5, "周末", "工作日")

显示中文星期:
=CHOOSE(WEEKDAY(A1, 2), "周一", "周二", "周三", "周四", "周五", "周六", "周日")

实际示例 #

text
考勤管理:
    A            B              C
1   日期         星期           类型
2   2024/1/15    =TEXT(A2,"aaa") =IF(WEEKDAY(A2,2)>5,"周末","工作日")
                → 一           → 工作日

WEEKNUM 函数 #

语法 #

excel
=WEEKNUM(date, [return_type])

返回日期在一年中的第几周

基本用法 #

excel
=WEEKNUM(DATE(2024, 1, 15))     → 3
=WEEKNUM(TODAY())               → 当前周数
=WEEKNUM(DATE(2024, 1, 1))      → 1

实际应用 #

excel
计算当前周数:
=WEEKNUM(TODAY())

按周分组:
="第" & WEEKNUM(A1) & "周"

判断是否为同一周:
=WEEKNUM(A1)=WEEKNUM(B1)

函数组合应用 #

计算年龄 #

excel
方法1(简单):
=YEAR(TODAY())-YEAR(A1)

方法2(精确):
=DATEDIF(A1, TODAY(), "Y")

方法3(考虑月份):
=IF(MONTH(TODAY())>MONTH(A1), 
    YEAR(TODAY())-YEAR(A1), 
    IF(MONTH(TODAY())<MONTH(A1), 
       YEAR(TODAY())-YEAR(A1)-1, 
       IF(DAY(TODAY())>=DAY(A1), 
          YEAR(TODAY())-YEAR(A1), 
          YEAR(TODAY())-YEAR(A1)-1)))

计算工龄 #

excel
=DATEDIF(A1, TODAY(), "Y") & "年" & DATEDIF(A1, TODAY(), "YM") & "月"
→ "3年5月"

计算季度 #

excel
方法1:
=ROUNDUP(MONTH(A1)/3, 0)

方法2:
=CHOOSE(MONTH(A1), 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4)

显示中文季度:
="第" & ROUNDUP(MONTH(A1)/3, 0) & "季度"

计算本月天数 #

excel
=DAY(DATE(YEAR(A1), MONTH(A1)+1, 0))

或:
=DAY(EOMONTH(A1, 0))

判断闰年 #

excel
=IF(OR(MOD(YEAR(A1), 400)=0, AND(MOD(YEAR(A1), 4)=0, MOD(YEAR(A1), 100)<>0)), "闰年", "平年")

或:
=IF(DAY(DATE(YEAR(A1), 2, 29))=29, "闰年", "平年")

实战案例 #

案例1:员工生日提醒 #

text
数据:
    A          B          C
1   员工       生日       状态
2   张三       1990/3/15  =IF(AND(MONTH(B2)=MONTH(TODAY()), 
                          DAY(B2)=DAY(TODAY())), "今天生日", 
                          IF(AND(MONTH(B2)=MONTH(TODAY()), 
                          DAY(B2)>DAY(TODAY())), 
                          "本月生日", ""))

案例2:合同到期提醒 #

text
数据:
    A            B          C
1   合同编号     到期日     状态
2   HT001        2024/2/15  =IF(B2<TODAY(), "已过期", 
                            IF(B2-TODAY()<=30, "即将到期", "正常"))

案例3:计算工作日 #

excel
计算两个日期之间的工作日数(不含周末):
=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(A1&":"&B1)), 2)<6))

或使用 NETWORKDAYS 函数:
=NETWORKDAYS(A1, B1)

小结 #

基础日期函数是日期处理的核心工具:

函数 用途 示例
TODAY 当前日期 =TODAY()
NOW 当前时间 =NOW()
DATE 创建日期 =DATE(2024, 1, 15)
YEAR 提取年份 =YEAR(A1)
MONTH 提取月份 =MONTH(A1)
DAY 提取日期 =DAY(A1)
WEEKDAY 星期几 =WEEKDAY(A1, 2)
WEEKNUM 第几周 =WEEKNUM(A1)

接下来,让我们学习 日期计算函数,掌握高级日期计算技巧。

最后更新:2026-04-11