DateDiff 函数

返回一个 Variant (Long),指定两个指定的日期之间的时间间隔数。

语法

DateDiff(interval, date1, date2, [ firstdayofweek, [ firstweekofyear ]] )

DateDiff 函数语法包括这些命名参数

Part 说明
interval 必需。 表示用于计算 date1date2 之间差异的时间间隔的字符串表达式
date1date2 必需;Variant (Date)。 要在计算中使用的两个日期。
firstdayofweek 可选。 一个指定一周的第一天的常量。 如果未指定,则会假定为星期日。
firstweekofyear 可选。 一个指定一年的第一周的常量。 如果未指定,则会假定 1 月 1 日出现的那一周为第一周。

设置

interval参数具有以下设置:

Setting 说明
yyyy
q 季度
m
y 每年的某一日
d
w 工作日
ww
h 小时
n 分钟
s

firstdayofweek 参数具有以下设置:

常量 说明
vbUseSystem 0 使用 NLS API 设置。
vbSunday 1 周日(默认)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

firstweekofyear 参数包含以下设置:

常量 说明
vbUseSystem 0 使用 NLS API 设置。
vbFirstJan1 1 从 1 月 1 日所在的周开始(默认)。
vbFirstFourDays 2 从至少包含新的一年中的四天的那一周开始。
vbFirstFullWeek 3 从每年的第一个完整的星期开始。

注解

使用 DateDiff 函数来确定两个日期之间存在的指定时间段的数目。 例如,您可以使用 DateDiff 计算两个日期之间的天数或今天与该年的最后一天之间的周数。

若要计算 date1date2 之间的天数,可以使用年份中的某一天 ("y") 或天 ("d")。 当时间间隔是工作日 ("w") 时,DateDiff 返回两个日期之间的周数。 如果 date1 为星期一,则 DateDiff 计算 date2 之前的星期一数。 它计算 date2 但不计算 date1

但是,如果时间间隔是周 ("ww"),则 DateDiff 函数返回这两个日期之间的日历周数。 它计算 date1date2 之间的星期日数。 如果它为星期日,则 DateDiff 计算 date2,但它不计算 date1,即使它是星期日也是如此。

如果 date1 引用的时间点晚于 date2,则 DateDiff 函数将返回负数。 firstdayofweek 参数影响使用“w”和“ww”时间间隔符号的计算。

如果 date1date2日期字符串,则指定的年份变为该日期的永久部分。 但是,如果 date1date2 用双引号 (" ") 引起且您省略了年份,则每当计算 date1date2 表达式时就会将当前年份插入您的代码。 这样能够使编写的代码在不同年份中均可使用。

在将 12 月 31 日与随后一年中的 1 月 1 日相比时,“年”("yyyy") 的 DateDiff 会返回 1,即使仅过去一天时间。

注意

对于 date1date2,如果 Calendar 属性设置为公历,则提供的日期必须为公历。 如果日历是回历,则所提供的日期必须是回历形式。

示例

此示例使用 DateDiff 函数显示给定日期与今天之间的天数。

Dim TheDate As Date    ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg

另请参阅

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。