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