DateAndTime.DateDiff 方法

定义

返回一个值,该值指定两个 Date 值之间的时间间隔数。

重载

DateDiff(DateInterval, DateTime, DateTime, FirstDayOfWeek, FirstWeekOfYear)

Date1Date2 中减去 ,以提供一个长值,指定两 Date 个值之间的时间间隔数。

DateDiff(String, Object, Object, FirstDayOfWeek, FirstWeekOfYear)

Date1Date2 中减去 ,以提供一个长值,指定两 Date 个值之间的时间间隔数。

DateDiff(DateInterval, DateTime, DateTime, FirstDayOfWeek, FirstWeekOfYear)

Source:
DateAndTime.vb
Source:
DateAndTime.vb
Source:
DateAndTime.vb

从 中减去 Date1Date2 ,以提供一个长值,指定两 Date 个值之间的时间间隔数。

public static long DateDiff (Microsoft.VisualBasic.DateInterval Interval, DateTime Date1, DateTime Date2, Microsoft.VisualBasic.FirstDayOfWeek DayOfWeek = Microsoft.VisualBasic.FirstDayOfWeek.Sunday, Microsoft.VisualBasic.FirstWeekOfYear WeekOfYear = Microsoft.VisualBasic.FirstWeekOfYear.Jan1);
static member DateDiff : Microsoft.VisualBasic.DateInterval * DateTime * DateTime * Microsoft.VisualBasic.FirstDayOfWeek * Microsoft.VisualBasic.FirstWeekOfYear -> int64
Public Function DateDiff (Interval As DateInterval, Date1 As DateTime, Date2 As DateTime, Optional DayOfWeek As FirstDayOfWeek = Microsoft.VisualBasic.FirstDayOfWeek.Sunday, Optional WeekOfYear As FirstWeekOfYear = Microsoft.VisualBasic.FirstWeekOfYear.Jan1) As Long

参数

Interval
DateInterval

必需。 DateInterval 枚举值或字符串表达式,表示要用作 Date1Date2 之差的单位的时间间隔。

Date1
DateTime

必需。 要在计算中使用的第一个日期/时间值。

Date2
DateTime

必需。 要在计算中使用的第二个日期/时间值。

DayOfWeek
FirstDayOfWeek

可选。 从 FirstDayOfWeek 枚举中选择的值,用于指定一周的第一天。 如果未指定,则使用 Sunday

WeekOfYear
FirstWeekOfYear

可选。 从 FirstWeekOfYear 枚举中选择的值,用于指定一年的第一周。 如果未指定,则使用 Jan1

返回

指定两个 Date 值之间的时间间隔数的长值。

例外

Date1Date2DayofWeek 超出范围。

Date1Date2 是无效类型。

示例

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

Dim date2Entered As String = InputBox("Enter a date")

Try
    Dim date2 As Date = Date.Parse(date2Entered)
    Dim date1 As Date = Now

    ' Determine the number of days between the two dates.
    Dim days As Long = DateDiff(DateInterval.Day, date1, date2)

    ' This statement has a string interval argument, and
    ' is equivalent to the above statement.
    'Dim days As Long = DateDiff("d", date1, date2)

    MessageBox.Show("Days from today: " & days.ToString)
Catch ex As Exception
    MessageBox.Show("Invalid Date: " & ex.Message)
End Try

注解

可以使用 DateDiff 函数来确定两个日期/时间值之间有多少个指定的时间间隔。 例如,可以使用 DateDiff 来计算两个日期之间的天数,或今天到年底之间的周数。

行为

  • 参数的处理。 DateDiff 从 的值 Date1 中减去 的值 Date2 ,以产生差异。 在调用程序中,这两个值都不会更改。

  • 返回值。 由于 Date1Date2 属于 Date 数据类型,因此它们在系统计时器上保留准确到 100 纳秒时钟周期的日期和时间值。 但是, DateDiff 始终将时间间隔的次数作为值 Long 返回。

    如果 Date1 表示的日期和时间晚于 Date2DateDiff 则 返回负数。

  • 日间隔。 如果 Interval 设置为 DateInterval.DayOfYear,则将其视为与 相同 DateInterval.Day,因为 DayOfYear 对于时间间隔而言, 不是有意义的单位。

  • 周间隔。 如果 Interval 设置为 DateInterval.WeekOfYear,则返回值表示包含 的一周的第一天与包含 Date1Date2的一周的第一天之间的周数。 下面的示例演示如何从 生成不同的结果 DateInterval.Weekday

    ' The following statements set datTim1 to a Thursday
    ' and datTim2 to the following Tuesday.
    Dim datTim1 As Date = #1/4/2001#
    Dim datTim2 As Date = #1/9/2001#
    ' 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 返回 0 到 wD ,因为两个日期之间的差小于 7 天,但它返回 1 到 wY ,因为相应日历周的第一天之间有 7 天的差。

  • 较大的间隔。 如果 Interval 设置为 DateInterval.Year,则返回值仅从 和 Date2Date1年份部分计算。 同样,的 DateInterval.Month 返回值仅从参数的年和月部分计算,以及 DateInterval.Quarter 从包含两个日期的季度计算。

    例如,将 12 月 31 日与下一年的 1 月 1 日进行比较时,DateDiff即使DateInterval.YearDateInterval.Quarter最多只经过一天,、 或 DateInterval.Month返回 1。

    对于具有多个纪元的日语等区域性,如果差异跨越两个或更多个纪元, DateDiff 该方法不会返回以年为单位的差值。 相反,可以计算 属性返回 Year 的值的差异,如以下示例所示: date2.Year - date1.Year

  • 其他间隔。 由于结构支持DateTime每个Date值,因此其方法提供了查找时间间隔的其他选项。 例如,可以在其中一种重载形式中使用 Subtract 方法:DateTime.SubtractDate变量中减去 TimeSpan 以返回另一个Date值,DateTime.Subtract并减去一个Date值以返回 TimeSpan。 你可以对进程进行计时,找出它需要多少毫秒,如以下示例所示。

    Dim startTime As Date = Now
    ' Run the process that is to be timed.
    Dim runLength As Global.System.TimeSpan = Now.Subtract(startTime)
    Dim millisecs As Double = runLength.TotalMilliseconds
    

参数 Interval 可以具有以下设置之一。

枚举值 字符串值 时差单位
DateInterval.Day "d"
DateInterval.DayOfYear “y”
DateInterval.Hour “h” 小时
DateInterval.Minute “n” Minute
DateInterval.Month “m” Month
DateInterval.Quarter “q” Quarter
DateInterval.Second “s”
DateInterval.Weekday “w”
DateInterval.WeekOfYear "ww" 日历周
DateInterval.Year “yyyy” Year

参数 DayOfWeek 可以具有以下设置之一。

枚举值 说明
FirstDayOfWeek.System 0 在系统设置中指定的一周的第一天
FirstDayOfWeek.Sunday 1 星期日 (默认)
FirstDayOfWeek.Monday 2 Monday (符合 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 新年的第一整周

另请参阅

适用于

DateDiff(String, Object, Object, FirstDayOfWeek, FirstWeekOfYear)

Source:
DateAndTime.vb
Source:
DateAndTime.vb
Source:
DateAndTime.vb

Date1Date2 中减去 ,以提供一个长值,指定两 Date 个值之间的时间间隔数。

public static long DateDiff (string Interval, object? Date1, object? Date2, Microsoft.VisualBasic.FirstDayOfWeek DayOfWeek = Microsoft.VisualBasic.FirstDayOfWeek.Sunday, Microsoft.VisualBasic.FirstWeekOfYear WeekOfYear = Microsoft.VisualBasic.FirstWeekOfYear.Jan1);
public static long DateDiff (string Interval, object Date1, object Date2, Microsoft.VisualBasic.FirstDayOfWeek DayOfWeek = Microsoft.VisualBasic.FirstDayOfWeek.Sunday, Microsoft.VisualBasic.FirstWeekOfYear WeekOfYear = Microsoft.VisualBasic.FirstWeekOfYear.Jan1);
static member DateDiff : string * obj * obj * Microsoft.VisualBasic.FirstDayOfWeek * Microsoft.VisualBasic.FirstWeekOfYear -> int64
Public Function DateDiff (Interval As String, Date1 As Object, Date2 As Object, Optional DayOfWeek As FirstDayOfWeek = Microsoft.VisualBasic.FirstDayOfWeek.Sunday, Optional WeekOfYear As FirstWeekOfYear = Microsoft.VisualBasic.FirstWeekOfYear.Jan1) As Long

参数

Interval
String

必需。 DateInterval 枚举值或字符串表达式,表示要用作 Date1Date2 之差的单位的时间间隔。

Date1
Object

必需。 要在计算中使用的第一个日期/时间值。

Date2
Object

必需。 要在计算中使用的第二个日期/时间值。

DayOfWeek
FirstDayOfWeek

可选。 从 FirstDayOfWeek 枚举中选择的值,用于指定一周的第一天。 如果未指定,则使用 Sunday

WeekOfYear
FirstWeekOfYear

可选。 从 FirstWeekOfYear 枚举中选择的值,用于指定一年的第一周。 如果未指定,则使用 Jan1

返回

指定两个 Date 值之间的时间间隔数的长值。

例外

Date1Date2DayofWeek 超出范围。

Date1Date2 是无效类型。

示例

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

Dim date2Entered As String = InputBox("Enter a date")

Try
    Dim date2 As Date = Date.Parse(date2Entered)
    Dim date1 As Date = Now

    ' Determine the number of days between the two dates.
    Dim days As Long = DateDiff(DateInterval.Day, date1, date2)

    ' This statement has a string interval argument, and
    ' is equivalent to the above statement.
    'Dim days As Long = DateDiff("d", date1, date2)

    MessageBox.Show("Days from today: " & days.ToString)
Catch ex As Exception
    MessageBox.Show("Invalid Date: " & ex.Message)
End Try

注解

可以使用 DateDiff 函数来确定在两个日期/时间值之间存在多少个指定的时间间隔。 例如,可以使用 DateDiff 来计算两个日期之间的天数,或从今天到年底的周数。

行为

  • 参数的处理。 DateDiffDate2 的值Date1中减去 的值,以产生差异。 调用程序中的两个值都不会更改。

  • 返回值。 由于 Date1Date2 属于 Date 数据类型,因此它们在系统计时器上保留准确到 100 纳秒的时钟周期值的日期和时间值。 但是, DateDiff 始终将时间间隔数作为值 Long 返回。

    如果 Date1 表示晚于 Date2的日期和时间, DateDiff 则返回负数。

  • 日间隔。 如果 Interval 设置为 DateInterval.DayOfYear,则将其视为 与 相同 DateInterval.Day,因为 DayOfYear 对于时间间隔而言,不是有意义的单位。

  • 周间隔。 如果 Interval 设置为 DateInterval.WeekOfYear,则返回值表示包含 的一周的第一天与包含 Date1Date2的一周的第一天之间的周数。 以下示例演示如何从 中生成不同的结果 DateInterval.Weekday

    ' The following statements set datTim1 to a Thursday
    ' and datTim2 to the following Tuesday.
    Dim datTim1 As Date = #1/4/2001#
    Dim datTim2 As Date = #1/9/2001#
    ' 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 返回 0 到 wD ,因为两个日期之间的差值小于 7 天,但返回 1, wY 因为相应日历周的第一天之间有 7 天差。

  • 更大的间隔。 如果 Interval 设置为 DateInterval.Year,则返回值仅从 和 Date2Date1年份部分计算。 同样,的 DateInterval.Month 返回值仅从参数的年份和月份部分计算,以及 DateInterval.Quarter 从包含两个日期的季度计算。

    例如,将 12 月 31 日与下一年的 1 月 1 日进行比较时,DateDiff为 、 DateInterval.QuarterDateInterval.Month返回 1DateInterval.Year,即使最多只用了一天。

    对于具有多个纪元的日本文化,如果差异跨越两个或更多个纪元, DateDiff 则 该方法不会返回以年为单位的差值。 相反,可以计算 属性返回 Year 的值的差异,如以下示例所示: date2.Year - date1.Year

  • 其他间隔。 由于结构支持DateTime每个Date值,因此其方法提供了查找时间间隔的其他选项。 例如,可以在 Subtract 其两种重载形式中使用 方法: DateTime.Subtract 从变量中减去 以 TimeSpan 返回另一 DateDate 值,并 DateTime.Subtract 减去一个 Date 值以返回 TimeSpan。 可以按时间确定进程需要多少毫秒,如以下示例所示。

    Dim startTime As Date = Now
    ' Run the process that is to be timed.
    Dim runLength As Global.System.TimeSpan = Now.Subtract(startTime)
    Dim millisecs As Double = runLength.TotalMilliseconds
    

参数 Interval 可以具有以下设置之一。

枚举值 字符串值 时差单位
DateInterval.Day "d"
DateInterval.DayOfYear “y”
DateInterval.Hour “h” 小时
DateInterval.Minute “n” Minute
DateInterval.Month “m” Month
DateInterval.Quarter “q” Quarter
DateInterval.Second “s”
DateInterval.Weekday “w”
DateInterval.WeekOfYear "ww" 日历周
DateInterval.Year “yyyy” Year

参数 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 新年的第一个完整周

另请参阅

适用于