DateDiff 函数
返回一个 Long 值,该值指定两个 Date 值之间的时间间隔数。
Public Overloads Function DateDiff( _
ByVal Interval As DateInterval, _
ByVal Date1 As DateTime, _
ByVal Date2 As DateTime, _
Optional ByVal DayOfWeek As FirstDayOfWeek = FirstDayOfWeek.Sunday, _
Optional ByVal WeekOfYear As FirstWeekOfYear = FirstWeekOfYear.Jan1 _
) As Long
- 或 -
Public Overloads Function DateDiff( _
ByVal Interval As String, _
ByVal Date1 As Object, _
ByVal Date2 As Object, _
Optional ByVal DayOfWeek As FirstDayOfWeek = FirstDayOfWeek.Sunday, _
Optional ByVal WeekOfYear As FirstWeekOfYear = FirstWeekOfYear.Jan1 _
) As Long
参数
Interval
必选项。DateInterval 枚举值或 String 表达式,表示要用作 Date1 和 Date2 之间差额单位的时间间隔。
Date1、Date2
必选。数据类型为 Date。想用于计算的两个日期/时间值。差额为 Date2 的值减去 Date1 的值。调用程序中的两个值都未更改。
DayOfWeek
可选项。选自 FirstDayOfWeek 枚举的值,该枚举用于指定周的第一天。若未指定,则使用 FirstDayOfWeek.Sunday。
WeekOfYear
可选项。选自 FirstWeekOfYear 枚举的值,该枚举用于指定年的第一周。若未指定,则使用 FirstWeekOfYear.Jan1。
设置
Interval 参数可以有以下设置。
枚举值 字符串 时间差额的单位
DateInterval.Day d 日
DateInterval.DayOfYear y 日
DateInterval.Hour h 小时
DateInterval.Minute n 分钟
DateInterval.Month m 月
DateInterval.Quarter q 季度
DateInterval.Second s 秒钟
DateInterval.Weekday w 周
DateInterval.WeekOfYear ww 日历周
DateInterval.Year yyyy 年
DayOfWeek 参数可以有以下设置之一。
枚举值 值 说明
FirstDayOfWeek.System 0 系统设置中指定的周的第一天
FirstDayOfWeek.Sunday 1 星期日(默认)
FirstDayOfWeek.Monday 2 星期一(依照 ISO 8601 标准第 3.17 节)
FirstDayOfWeek.Tuesday 3 星期二
FirstDayOfWeek.Wednesday 4 星期三
FirstDayOfWeek.Thursday 5 星期四
FirstDayOfWeek.Friday 6 星期五
FirstDayOfWeek.Saturday 7 星期六
WeekOfYear 参数可以有以下设置。
枚举值 值 说明
FirstWeekOfYear.System 0 系统设置中指定的年的第一周
FirstWeekOfYear.Jan1 1 1 月 1 日所在的周(默认)
FirstWeekOfYear.FirstFourDays 2 至少有四天属于新年的周(依照 ISO 8601 标准第 3.17 节)
FirstWeekOfYear.FirstFullWeek 3 新年的第一个全周
异常/错误
异常类型 错误号 条件
ArgumentException 5 无效 Interval。
ArgumentException 5 Date 或 DayofWeek 超出范围。
InvalidCastException 13 Date1 或 Date2 为无效类型。
备注
可以使用 DateDiff 函数来确定两个日期/时间值之间存在多少指定时间间隔。例如,可以使用 DateDiff 来计算两个日期之间相隔几日,或计算从今天起到年底相隔几周。
若 DateInterval.DayOfYear 设置了 Interval,则对其的处理和 DateInterval.Day 一样,因为 DayOfYear 作为时间间隔单位是没有意义的。
若 Interval 被设置为 DateInterval.WeekOfYear,则返回值表示包含 Date1 的周的第一天与包含 Date2 的周的第一天相隔的周数。以下的示例显示了这样所产生的结果与 DateInterval.Weekday 所产生的结果的不同之处。
Dim DatTim1 As Date = #1/4/2001# ' This is a Thursday.
Dim DatTim2 As Date = #1/9/2001# ' This is the next Tuesday.
' Assume Sunday is specified as first day of the week.
Dim WD As Long = DateDiff(DateInterval.Weekday, DatTim1, DatTim2)
Dim WY As Long = DateDiff(DateInterval.WeekOfYear, DatTim1, DatTim2)
在上述示例中,DateDiff 为 WD 返回 0,因为两日期之间的差额小于七天,而它为 WY 返回 1,因为两个日历周各自的第一天之间相差七天。
若 Interval 被设置为 DateInterval.Year,则返回值只从 Date1 和 Date2 的年份部分算起。
因为 Date1 和 Date2 的数据类型为 Date,所以它们所容纳系统计时器上日期和时间值精确到 100 毫微秒。可是,DateDiff 总是将时间间隔数返回成 Long 数据类型值。
若 Date1 表示的日期和时间比 Date2 的晚,则 DateDiff 返回负数。
如果有任何参数的值无效,就会发生 ArgumentException 错误。若 Date1 或 Date2 参数的值无法转换为有效 Date 值,则发生 InvalidCastException 错误。
注意 将 12 月 31 日与来年的 1 月 1 日比较时,即便只过去一天,DateDiff 给 DateInterval.Year、DateInterval.Quarter 或 DateInterval.Month 都返回 1。
因为每个 Date 值都由 DateTime 结构支持,所以其方法在查找时间间隔中提供了附加选项。例如,可以在它两个重载窗体的任一个内使用 Subtract 方法。一个窗体将 Date 变量减去 TimeSpan 后返回另一 Date 值;另一个则减去 Date 值后返回 TimeSpan。可以给过程计时,以确定它所花的毫秒数,如下所示:
Dim StartTime As Date = Now ' Starting date/time.
' Run the process that is to be timed.
Dim RunLength As System.TimeSpan = Now.Subtract(StartTime)
Dim Millisecs As Integer = RunLength.Milliseconds
示例
本示例使用 DateDiff 函数显示给定日期和今天的间隔天数。
Dim FirstDate, Msg As String ' Declare variables.
Dim SecondDate As Date
FirstDate = InputBox("Enter a date")
SecondDate = CDate(FirstDate)
Msg = "Days from today: " & DateDiff(DateInterval.Day, Now, SecondDate)
MsgBox (Msg)
回复 更多评论