计算两个日期之间的差值

应用对象
Microsoft 365 专属 Excel Excel 2024 Excel 2021 Excel 2019 Excel 2016

警告

Excel 提供了 DATEDIF 函数,以便支持来自 Lotus 1-2-3 的旧版工作簿。 在某些应用场景下,DATEDIF 函数计算结果可能并不正确。 有关详细信息,请转到 DATEDIF 函数一文的已知问题部分

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

注意

如果 Start_date 大于 End_date,则结果将为 #NUM!

以天为单位的差值

=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 在另一个单元格中,使用带有 “ym” 参数的 DATEDIF 公式。 “ym” 会返回过去整整一年剩余的月数。

3.使用其他公式求得天数。

=DATEDIF (D17,E17,md) 和结果:5 现在我们需要查找剩余天数。 我们将通过编写其他类型的公式来实现此目的,如上所示。 此公式从单元格 E17 中的原始结束日期 (5/6/2016) 减去当月第一天 (5/1/2016)。 其原理如下:首先,DATE 函数会创建日期 5/1/2016。 DATE 函数使用单元格 E17 中的年份和单元格 E17 中的月份创建日期。 1 表示该月的第一天。 DATE 函数的结果是 5/1/2016。 然后,从单元格 E17 中的原始结束日期(即 5/6/2016)减去该日期。 5/6/2016 减 5/1/2016 得 5 天。

警告

不建议使用 DATEDIF "md" 参数,因为它可能会得出不准确的计算结果。

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

=DATEDIF (D17,E17,y) & 年,&DATEDIF (D17,E17,ym) & 个月,&DATEDIF (D17,E17,md) & 天和结果: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 将星期六和星期日确立为周末,并从总计中排除。

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

显示 2 - 星期日、星期一、3 - 星期一、星期二等的 Intellisense 列表 如果星期六和星期日不是周末,请将 IntelliSense 列表中的 1 更改为另一个数字。 例如,2 将星期日和星期一确立为周末。

4.键入假日范围名称。

=NETWORKDAYS。INTL (D53,E53,1,MyHolidays) 和结果:252 如果在上面的“开始之前”部分创建了假日区域名称,请在末尾键入它,如下所示。 如果没有假日,可省略逗号和 MyHolidays。

计算经过的时间

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

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

开始日期/时间上午 7:15,结束日期/时间下午 4:30 在此示例中,开始时间在单元格 D80 中,结束时间在 E80 中。 请确保键入小时和分钟数,并在 AM 或 PM 之前留一个空格

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

“设置单元格格式”对话框、“自定义”命令、h:mm AM/PM 类型 选择两个日期,然后在 Mac) 上按 CTRL + 1 (或 MAC 命令按钮图标 + 1 的图像。 如果尚未设置,请确保选择 “自定义>h:mm AM/PM”。

3.将两个时间相减。

=E80-D80,结果:上午 9:15 在另一个单元格中,从结束时间单元格中减去开始时间单元格。

4.设置“h:mm”格式。

“设置单元格格式”对话框,“自定义”命令,h:mm 类型 在 Mac) 上按 CTRL + 1 (或 MAC 命令按钮图标 + 1 的图像。 选择 “自定义>h:mm ”,以便结果不包括 AM 和 PM。

计算两个日期和时间之间的经过时间

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

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

开始日期为 16/1/1 下午 1:00;结束日期 1/2/16 2:00 PM 在一个单元格中,键入完整的开始日期/时间。 在另一个单元格中,键入完整的结束日期/时间。 每个单元格都应包含月、日、年、小时和分钟数,并在 AM 或 PM 之前留一个空格

2.设置“2012-3-14 1:30 PM”格式。

“设置单元格格式”对话框,“日期”命令,12 年 3 月 14 日下午 1:30 类型 选择这两个单元格,然后在 Mac) 上按 CTRL + 1 (或 MAC 命令按钮图标 + 1 的图像。 然后选择 “日期>3/14/12 1:30 PM”。 这不是你要设置的日期,只是显示格式的示例。 请注意,在 Excel 2016 之前的版本中,此格式可能有不同的示例日期,如 2001/3/14 1:30 PM。

3.将两者相减。

=E84-D84,结果为 1.041666667 在另一个单元格中,从结束日期/时间中减去开始日期/时间。 结果可能会显示为数字和小数。 你将在下一步中修复此问题。

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

“设置单元格格式”对话框,“自定义”命令,[h]:mm 类型 在 Mac) 上按 CTRL + 1 (或 MAC 命令按钮图标 + 1 的图像。 选择“自定义”。 在“ 类型 ”框中,键入 [h]:mm

DATEDIF 函数
NETWORKDAYS.INTL 函数
NETWORKDAYS
更多日期和时间函数
计算两个时间之间的差值