一、日期函数的核心价值与基础认知
日期函数是表格数据处理的基础工具,掌握 DATE、DATEDIF、EDATE 等核心函数,可以高效完成合同到期提醒、工龄计算、项目排期等常见任务。在 WPS 表格和 Microsoft Excel 中,日期本质上是以序列号形式存储的——1900 年 1 月 1 日对应的序列号为 1,此后每过一天加 1。理解这一点,是解决"日期显示为数字"或"公式结果异常"等问题的关键。
在实际办公场景中,日期函数的应用频率仅次于求和与查找。考勤统计需要计算工作日天数,人事管理需要根据入职日期算工龄,财务对账需要判断账期是否到期。这些都离不开对日期函数的熟练运用。WPS 表格与 Excel 在日期函数的语法和计算逻辑上完全兼容,本文所有公式均可直接使用。
1.1 日期的序列号机制
当你在单元格输入"2024/3/15"时,表格内部存储的其实是一个整数。从 1900 年 1 月 1 日起算,每一天对应一个递增的序列号。这意味着日期可以直接参与加减运算:=A1+30 表示 A1 日期往后推 30 天,=A2-A1 表示两个日期之间相差的天数。
如果运算结果变成了一串数字,只需选中单元格,将格式设置为日期即可恢复正常显示。这是初学者最常遇到的困惑之一。
二、DATE 函数:从年月日构建日期
DATE 函数是最基础的日期构造函数,它将独立的年、月、日数值组合成一个标准日期,也是其他日期函数经常配合使用的基础组件。
语法格式:
=DATE(year, month, day)
三个参数分别对应年份、月份和日期,均为数值。DATE 函数的强大之处在于它能自动处理进位:如果 month 大于 12,会自动进位到下一年;如果 day 超过当月天数,会自动进位到下一个月。
2.1 基础用法示例
| 公式 | 结果 | 说明 |
=DATE(2024,3,15) | 2024/3/15 | 构建标准日期 |
=DATE(2024,15,1) | 2025/3/1 | 月份 15 自动进位为次年 3 月 |
=DATE(2024,2,30) | 2024/3/1 | 2 月无 30 日,进位到 3 月 1 日 |
2.2 配合其他函数提取并重组日期
当日期信息分散在不同列时,DATE 函数可以将它们合并。例如 A 列存年份、B 列存月份、C 列存日,使用 =DATE(A2,B2,C2) 即可得到完整日期。反过来,从日期中提取年月日则使用 YEAR、MONTH、DAY 函数:
=YEAR(A2) 提取年份
=MONTH(A2) 提取月份
=DAY(A2) 提取日
三、DATEDIF 函数:计算两个日期的差值
DATEDIF 是计算年龄、工龄、合同剩余天数的利器,它可以按年、月、日三种维度返回两个日期之间的差值,是人事和行政工作中使用频率最高的隐藏函数。
语法格式:
=DATEDIF(start_date, end_date, unit)
前两个参数是起始日期和结束日期,第三个参数 unit 决定返回值的单位:
| unit 参数 | 返回值含义 | 示例 |
| "Y" | 整年数 | 计算工龄 |
| "M" | 整月数 | 合同月数 |
| "D" | 总天数 | 相识天数 |
| "YM" | 去除年后剩余的月数 | 工龄 3 年 2 个月中的"2" |
| "MD" | 去除月后剩余的天数 | 精确到天的差值 |
| "YD" | 去除年后剩余的天数 | 同年内的天数差 |
3.1 工龄计算实战
入职日期在 A2,当前日期用 TODAY() 函数获取,计算完整工龄年数:=DATEDIF(A2,TODAY(),"Y")。如果要精确到"X 年 Y 个月",可以组合公式:
=DATEDIF(A2,TODAY(),"Y")&"年"&DATEDIF(A2,TODAY(),"YM")&"个月"
需要注意 DATEDIF 的一个特性:如果 start_date 大于 end_date,函数会返回 #NUM! 错误。在处理未来日期时要确保顺序正确。
四、EDATE 与 EOMONTH:按月推进日期
EDATE 用于在指定日期基础上增减整月,EOMONTH 用于获取某月最后一天,这两个函数在贷款还款日计算、合同到期管理中不可或缺。
EDATE 语法:=EDATE(start_date, months)
months 为正数向后推,负数向前推。例如 =EDATE("2024/3/15",6) 返回 2024/9/15,=EDATE("2024/3/15",-3) 返回 2023/12/15。
EOMONTH 语法:=EOMONTH(start_date, months)
返回指定月份前后那个月的最后一天。这在需要"月末"统计的场景非常实用,例如获取本月最后一天:=EOMONTH(TODAY(),0)。
五、WEEKDAY 与 WORKDAY:星期与工作日
WEEKDAY 返回某日期对应的星期几,NETWORKDAYS 计算两个日期间的工作日天数,二者结合可以完成排班、考勤、项目周期等复杂计算。
5.1 WEEKDAY 函数
语法:=WEEKDAY(serial_number, [return_type])
return_type 决定返回值的规则。默认为 1(周日=1,周六=7);设为 2 时周一=1,周日=7,符合国内习惯。配合 CHOOSE 函数可以直接显示中文星期:
=CHOOSE(WEEKDAY(A2,2),"周一","周二","周三","周四","周五","周六","周日")
5.2 NETWORKDAYS 工作日计算
语法:=NETWORKDAYS(start_date, end_date, [holidays])
自动排除周末,并可选择性传入节假日区域作为第三个参数。例如计算项目实际工作天数:=NETWORKDAYS(B2,C2,H2:H10),其中 H2:H10 是法定节假日列表。
5.3 WORKDAY 反推日期
与 NETWORKDAYS 相反,WORKDAY 根据工作日天数反推结束日期:=WORKDAY(start_date, days, [holidays])。从 3 月 15 日起经过 10 个工作日:=WORKDAY("2024/3/15",10)。
六、TODAY 与 NOW:动态日期时间
TODAY 和 NOW 是两个无需参数的动态函数,它们会在表格重新计算时自动更新,适合做实时倒计时、动态报表标题。
=TODAY() 返回当前日期(不含时间)
=NOW() 返回当前日期和时间
合同到期提醒公式:=IF(B2-TODAY()<30,"即将到期","正常"),当合同日期距今不足 30 天时自动提醒。
七、自定义日期格式
日期格式的自定义是让报表更专业的关键一步,通过格式代码可以将同一日期显示为多种样式,而不改变底层存储值。
右键单元格选择"设置单元格格式",在自定义中输入格式代码:
| 格式代码 | 显示效果 |
| yyyy-mm-dd | 2024-03-15 |
| yyyy"年"m"月"d"日" | 2024年3月15日 |
| yyyy-mm-dd aaa | 2024-03-15 周五 |
| m"月"d"日" dddd | 3月15日 Friday |
| yyyymmdd | 20240315 |
其中 aaa 显示中文星期简称(周一),dddd 显示英文全称。格式代码只改变显示,不改变实际值,可以放心使用。
八、常见错误与排查
日期函数的报错往往源于数据类型不匹配和参数顺序错误,掌握排查方法可以快速定位问题。
常见问题速查
| 问题现象 | 原因分析 | 解决方案 |
| 日期显示为 45000 这样的数字 | 单元格格式为数值 | 改为日期格式 |
| 公式显示为文本而非结果 | 单元格为文本格式 | 改为常规后重新输入公式 |
| DATEDIF 返回 #NUM! | 起始日期大于结束日期 | 调换参数顺序 |
| 两个日期相减结果异常 | 其中一个是文本型日期 | 用 DATEVALUE 转换 |
| #VALUE! 错误 | 参数不是有效日期 | 检查数据源格式 |
九、FAQ 常见问题解答
Q1:Excel 和 WPS 表格的日期函数完全一样吗?
WPS 表格与 Excel 在日期函数的语法和计算逻辑上完全兼容,包括 DATE、DATEDIF、EDATE、NETWORKDAYS 等所有常用函数。唯一的细微差异在于某些版本的默认日期系统(1900 与 1904 日期系统),但在日常办公中几乎不会遇到,直接使用即可。
Q2:如何批量把文本格式的日期转换成真正的日期?
方法一:使用"数据"选项卡中的"分列"功能,在第三步选择"日期"格式。方法二:使用 DATEVALUE 函数转换:=DATEVALUE(A2)。方法三:如果是"2024.3.15"这种格式,可以先替换"."为"/",再用 DATEVALUE 转换。
Q3:DATEDIF 为什么在函数列表里找不到?
DATEDIF 是一个源自 Lotus 1-2-3 时代的兼容函数,微软出于历史原因保留了它但没有在函数库中公开列出。虽然无法通过输入提示找到,但手动输入 =DATEDIF(...) 即可正常使用,WPS 表格同样支持。
Q4:如何计算某个月有多少天?
利用 EOMONTH 获取月末日期,再用 DAY 提取天数:=DAY(EOMONTH(DATE(2024,2,1),0)),返回 2 月的天数(2024 年是闰年,结果为 29)。
十、总结
日期函数虽然种类繁多,但核心就围绕三个能力:构建日期(DATE)、计算差值(DATEDIF、NETWORKDAYS)、按规则推进(EDATE、EOMONTH)。配合 YEAR/MONTH/DAY 提取函数和自定义格式,基本能覆盖所有办公场景的日期处理需求。关键是理解日期的序列号本质——一旦明白日期就是数字,加减运算和格式切换就迎刃而解。建议在实际表格中逐个测试本文的公式示例,遇到问题时参考错误排查表快速定位,WPS 表格用户可以完全放心地复用这些公式。