Menu

Excel DATE 函数:用年月日生成日期

=DATE(2026,3,15) 用年、月、日三个数返回 2026 年 3 月 15 日这个日期。YEAR、MONTH 和 DAY 把日期拆开,而 DATE 会把第 13 个月自动转入下一年。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=DATE(2026,3,15) 返回 2026 年 3 月 15 日这个日期。三个参数依次是年、月、日,可以是数字或单元格引用。与之相反的函数 YEAR、MONTH 和 DAY 则把日期拆回这三个数字。

用三列数据生成日期
D2
ABCD
1YearMonthDayDate
220263152026-03-15
3202612312026-12-31
42027112027-01-01
520242292024-02-29
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

每一行都变成了一个真正的日期,Excel 可以对它排序、相减和设置格式。把 B2 中的月份改成 7,D2 就变成 2026-07-15。参数顺序是固定的,年份在前,与你所在国家的日期书写顺序无关:=DATE(15,3,2026) 并不是 3 月 15 日。

YEAR、MONTH 和 DAY:把日期拆开

它们各自以数字形式返回日期的一部分。按年或按月分组、筛选时通常就用它们,例如放在供 SUMIF 或数据透视表读取的辅助列中。

日期的各个部分
B2
ABCDE
1DateYearMonthDayMonth name
22026-03-152026315March
32025-11-022025112November
42024-02-292024229February
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

第一行得到 2026、3 和 15。MONTH 返回的是数字;要得到月份名称,用 TEXT 配合 "mmmm"(March)或 "mmm"(Mar),参见 TEXT 函数。

第 13 个月和第 0 天:DATE 如何进位

DATE 接受大于 12 的月份和超过月底的天数,并像日历那样把多出来的部分往后推。第 13 个月就是下一年的 1 月,第 0 天就是上个月的最后一天。这样一来,任意月份的第一天和最后一天都只需一行公式。

进位、月初和月末
B5
ABCD
1FormulaResultDate
2Month 132027-01-012026-02-17
3February 302026-03-02
4Day 0 of March2026-02-28
5First of the month2026-02-01
6Last of the month2026-02-28
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

DATE(2026,13,1) 是 2027-01-01,2 月 30 日变成 2026-03-02,3 月的第 0 天是 2026-02-28。第 5 行和第 6 行使用 D2 中的日期:把它改成任意日期,就能得到该月的第一天和最后一天,闰年也能正确处理(试试 2024-02-17)。EOMONTH 也能求月末,参见加减天数和月份。

把文本转换成日期

从其他系统导入的日期经常是文本。Excel 无法对文本做日期运算,所以要先转换。DATEVALUE 能读取 Excel 可识别格式的文本,例如 2026-03-15。像 20260315 这样的代码和 15.03.2026 这样的欧洲日期,需要用 LEFT、MID 和 RIGHT 截取,再用 DATE 拼回去。

本该是日期的文本
B3
AB
1TextDate
22026-03-152026-03-15
3202603152026-03-15
415.03.20262026-03-15
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

三行都返回 2026-03-15。LEFT、MID 和 RIGHT 返回的是文本,DATE 会自动把 "2026" 和 "03" 转换成数字。DATEVALUE 取决于你的系统日期设置:"3/15/2026" 在美国设置下读作 3 月 15 日,而在日期以日开头的地区会报 #VALUE! 错误。如果只是转换一列数据,“数据 > 分列”不用公式就能原地转换:在第 3 步中选择“日期”,以及文本使用的顺序(15.03.2026 选 DMY)。

练习:生成日期

轮到你了:三列合成一个日期
D2
ABCD
1YearMonthDayDate
22026417
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 D2 中,用 A2 中的年、B2 中的月和 C2 中的日生成日期。

轮到你了:日期代码
B2
AB
1CodeDate
220260917
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: A2 中是 yyyymmdd 形式的文本日期。在 B2 中把它转换成真正的日期。

常见错误:两位数年份

DATE 会把 0 到 1899 之间的年份当作相对于 1900 年的偏移量,所以两位数的年份会落到错误的世纪,而且没有任何报错。

两位数年份
B2
ABC
1YearDATEFixed
2261926-03-152026-03-15
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

=DATE(26,3,15) 返回的是 1926-03-15,而不是 2026 年。当源数据是两位数年份时,像 C2 那样加上 2000;更好的做法是修正源数据,让它保存完整的年份。

常见问题

Excel 中 DATE 函数怎么用?

=DATE(year,month,day) 用三个数字返回一个日期:=DATE(2026,3,15) 就是 2026 年 3 月 15 日。参数可以是单元格引用,例如 =DATE(A2,B2,C2)。

如何从日期中提取年、月或日?

=YEAR(A2)、=MONTH(A2) 和 =DAY(A2) 以数字形式返回各部分。要得到月份名称,用 =TEXT(A2,"mmmm")。

如何在 Excel 中求某月的第一天?

=DATE(YEAR(A2),MONTH(A2),1) 返回 A2 所在月份的第一天。=DATE(YEAR(A2),MONTH(A2)+1,0) 返回最后一天,因为某月的第 0 天就是上个月的最后一天。

如何在 Excel 中把文本转换成日期?

如果文本是 Excel 能识别的格式,=DATEVALUE(A2) 就能转换。对于 20260315 这样的代码,先把各部分截取出来,再重新组成日期:=DATE(LEFT(A2,4),MID(A2,5,2),RIGHT(A2,2))。

DATE 中的月份大于 12 会怎样?

DATE 会把它转入下一年:=DATE(2026,13,1) 是 2027-01-01,=DATE(2026,14,1) 是 2027-02-01。天数也以同样的方式进位,零或负数则往前推。

Coddy 编程语言插图

和 Coddy 一起学编程

开始