计算两个日期之差

若要计算两个日期之差,请使用 DATEDIF 函数。首先在一个单元格中输入开始日期,并在另一个单元格中输入结束日期。然后键入一个如下所示的公式。

天数差

=DATEDIF(D9,E9,"d"),结果为 856

在此示例中,开始日期在单元格 D9 中,结束日期在 E9 中。公式在 F9 中。“d”返回两个日期之间的整天数。

周数差

=(DATEDIF(D13,E13,"d")/7),结果为:122.29

在此示例中,开始日期在单元格 D13 中,结束日期在 E13 中。“d” 返回天数。但请注意末尾的“/7”。因为每周有7天,所以需将天数除以 7。请注意,还需将此结果的格式设置为数字。按 Ctrl+1。然后单击“数字”>“小数位数:2”。

月数差

=DATEDIF(D5,E5,"m"),结果为:28

在此示例中,开始日期在单元格 D5 中,结束日期在 E5 中。在该公式中,“m”返回两个日期之间的整月数。

年数差

=DATEDIF(D2,E2,"y"),结果为:2

在此示例中,开始日期在单元格 D2 中,结束日期在 E2 中。“y”返回两个日期之间的整年数。

按累计的年、月和日计算年限

也可以计算年龄或某人的工龄。结果可能类似于“2 年,4 个月,5 天”。

1.使用 DATEDIF 查找总年数。

=DATEDIF(D17,E17,"y"),结果为:2

在此示例中,开始日期在单元格 D17 中,结束日期在 E17 中。在此公式中,“y”返回两个日期之间的整年数。

2.再次使用 DATEDIF,并结合“ym”来查找月数。

=DATEDIF(D17,E17,"ym"),结果为:4

在另一个单元格,将 DATEDIF 公式与“ym”参数结合使用。“ym”返回最后一个整年后的剩余月数。

3.使用不同公式查找天数。

=DATEDIF(D17,E17,"md"),结果为:5

现在需要查找剩余天数。将通过编写另一种公式(如上所示)来完成此操作。此公式从单元格 E17 中的原始结束日期 (2016/5/6) 减去当月第一天 (2016/5/1)。其原理如下:首先,DATE 函数创建日期 2016/5/1。该函数使用单元格 E17 中的年份和单元格 E17 中的月份创建日期。“1”表示该月的第一天。DATE 函数的结果是 2016/5/1。然后,从单元格 E17 中的原始结束日期(即 5/6/2016)减去该日期。2016/5/6 减 2016/5/1 得 5 天。

注意: 我们不建议使用 DATEDIF "md" 参数,因为它的计算结果可能不准确。

4.可选:将三个公式合并为一个。

=DATEDIF(D17,E17,"y")&" years, "&DATEDIF(D17,E17,"ym")&" months, "&DATEDIF(D17,E17,"md")&" days",结果为:2 年,4 个月,5 天

可以把这三个计算放在一个单元格中,如本例所示。使用 & 号、引号和文本。要键入的公式较长,但至少都在一个单元格中。提示:按 Alt+Enter,在公式中插入换行符。这使公式更简单易读。此外,如果无法看到完整公式,请按 Ctrl+Shift+U。

下载示例

可以下载示例工作簿,其中包含本文中的所有示例。可以按照示例使用公式或创建自己的公式。

下载日期计算示例

其他日期和时间计算

如上所述,DATEDIF 函数计算开始日期和结束日期之差。但是,也可以在公式中使用“TODAY()”函数,而不键入具体日期。使用 TODAY() 函数时,Excel 使用计算机的当前日期作为该日期。请记住,日后重新打开该文件时,此日期会发生更改。

=DATEDIF(TODAY(),D28,"y"),结果为:984

请注意,编写此内容的日期是 2016 年 10 月 6 日。

若要计算两个日期之间的工作日数,请使用 NETWORKDAYS.INTL 函数。还可以排除周末和假日。

开始之前:确定是否要排除假日日期。若要排除,请在单独的区域或工作表中键入假日日期列表。将每个假日日期放在各自的单元格中。然后选择这些单元格,并选择“公式”>“定义名称”。将该范围命名为“MyHolidays”,然后单击“确定”。然后使用下面的步骤创建公式。

1.键入开始日期和结束日期。

单元格 D53 中的开始日期为 2016/1/1,单元格 E53 中的结束日期为 2016/12/31

在此示例中,开始日期在单元格 D53 中,结束日期在单元格 E53 中。

2.在另一个单元格中,键入一个如下所示的公式:

=NETWORKDAYS.INTL(D53,E53,1),结果为:261

键入类似上述示例所示的公式。公式中的 1 将星期六和星期日设为周末,并将其从总数中排除。

注意:Excel 2007 没有 NETWORKDAYS.INTL 函数。但是,它有 NETWORKDAYS 函数。在 Excel 2007 中,上述示例将如下所示:=NETWORKDAYS(D53,E53)。因为 NETWORKDAYS 假定周末是星期六和星期日,所以不指定 1。

3.如有必要,请对 1 进行更改。

IntelliSense 列表,显示 2 - 星期日、星期一;3 - 星期一、星期二等

如果星期六和星期日不是你的周末,则将 IntelliSense 列表中的 1 更改为另一个数字。例如,2 可将星期日和星期一设为周末。

如果使用 Excel 2007,请跳过此步骤。因为 Excel 2007 的 NETWORKDAYS 函数始终假定周末是星期六和星期日。

4.键入假日范围名称。

=NETWORKDAYS.INTL(D53,E53,1,MyHolidays),结果为:252

如果在上面的“开始之前”部分创建了假日范围名称,那么请在末尾键入此名称,如下所示。如果没有假日,则可省去逗号和 MyHolidays。如果使用 Excel 2007,上述示例将改为如下所示:=NETWORKDAYS(D53,E53,MyHolidays)

提示:如果不想引用假日范围名称,还可改为键入范围(例如“D35:E:39”。或者,可在公式内键入每个假日。例如,如果假日是 2016 年 1 月 1 日和 2 日,则可输入:=NETWORKDAYS.INTL(D53,E53,1,{"2016/1/1","2016/1/2"})。在 Excel 2007 中,键入的公式如下:=NETWORKDAYS(D53,E53,{"1/1/2016","1/2/2016"})

可以通过从一个时间减去另一个时间来计算经过的时间。首先在一个单元格中输入开始时间,并在另一个单元格中输入结束时间。请确保输入完整时间,包括小时和分钟,并且在 AM 或 PM 之前输入空格。操作方式如下:

1. 键入开始时间和结束时间。

开始日期/时间为 7:15 AM,结束日期/时间为 4:30 PM

在此示例中,开始时间在单元格 D80 中,结束时间在 E80 中。请确保键入小时和分钟,并且在 AM 或 PM 之前输入空格。

2.设置为 h:mm AM/PM 格式。

“设置​​单元格格式”对话框的“自定义”命令和“h:mm AM/PM”类型

选择这两个日期,然后按 Ctrl+1(Mac 上按 MAC 命令按钮图标的图像 +1)。请确保选择“自定义”>“h:mm AM/PM”(如果尚未设置)。

3.将两个时间相减。

=E80-D80,结果为:9:15 AM

在另一个单元格中,从结束时间单元减去开始时间单元格。

4.设置为 h:mm 格式。

“设置​​单元格格式”对话框的“自定义”命令和 h:mm 类型

按 Ctrl+1(Mac 上按 MAC 命令按钮图标的图像 +1)选择“自定义”>“h:mm”,以便在结果中排除 AM 和 PM。

要计算两个日期和时间之间的时间,只需从其中一个减去另一个即可。但是,必须将格式应用于每个单元格,确保 Excel 返回所需结果。

1.键入两个完整的日期和时间。

开始日期为 16/1/1 PM 1:00;结束日期为 16/1/2 PM 2:00

在一个单元格中,键入完整的开始日期/时间。在另一个单元格中,键入完整的结束日期/时间。每个单元格都应具备年、月、日、小时和分钟,AM 或 PM 之前需有空格。

2.设置为 12/3/14 1:30 PM 格式。

“设置​​单元格格式”对话框的“日期”命令和“12/3/14 PM 1:30”类型

选择这两个单元格,然后按 Ctrl+1(Mac 上按 MAC 命令按钮图标的图像 +1)。然后选择“日期”>“12/3/14 1:30 PM”。这不是你要设置的日期,它只是一个该格式的显示效果示例。请注意,在 Excel 2016 之前的版本中,此格式可能具有不同的示例日期,例如“01/3/14 1:30 PM”。

3.将两个日期/时间相减。

=E84-D84,结果为 1.041666667

在另一个单元格中,从结束日期/时间中减去开始日期/时间。结果可能是带小数的数字。将在下一步中解决该问题。

4.设置为 [h]:mm 格式。

“设置​​单元格格式”对话框的“自定义”命令和“[h]:mm”类型

按 Ctrl+1(Mac 上按 MAC 命令按钮图标的图像 +1)选择“自定义”。在“类型”框中,键入“[h]: mm”。

另请参阅

DATEDIF 函数

NETWORKDAYS.INTL 函数

NETWORKDAYS

其他日期和时间函数

计算两个时间之差

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×