DateAndTime.DateDiff 方法

定义

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

重载

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

Date2 中减去 Date1,以指定两个 Date 值之间的时间间隔数的长值。

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

Date2 中减去 Date1,以指定两个 Date 值之间的时间间隔数的长值。

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

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

Date2 中减去 Date1,以指定两个 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 计算两个日期之间的天数,或今天到年底之间的周数。

行为

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

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

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

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

  • 周间隔。 如果 Interval 设置为 DateInterval.WeekOfYear,则返回值表示包含 Date1 的一周的第一天与包含 Date2的一周的第一天之间的周数。 下面的示例演示如何生成 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,则返回值仅从 Date1Date2的年份部分计算。 同样,DateInterval.Month 的返回值仅从参数的年份和月份部分计算,以及包含两个日期的季度的 DateInterval.Quarter

    例如,将 12 月 31 日与次年 1 月 1 日进行比较时,DateDiff 返回 1,DateInterval.YearDateInterval.QuarterDateInterval.Month,尽管最多只用了一天。

    对于具有多个纪元的日本文化,如果差异跨越两个或更多纪元,则 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” 分钟
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 新年的第一整周

另请参阅

适用于

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

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

Date2 中减去 Date1,以指定两个 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,则返回值表示包含 Date1 的一周的第一天与包含 Date2的一周的第一天之间的周数。 下面的示例演示如何生成 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,则返回值仅从 Date1Date2的年份部分计算。 同样,DateInterval.Month 的返回值仅从参数的年份和月份部分计算,以及包含两个日期的季度的 DateInterval.Quarter

    例如,将 12 月 31 日与次年 1 月 1 日进行比较时,DateDiff 返回 1,DateInterval.YearDateInterval.QuarterDateInterval.Month,尽管最多只用了一天。

    对于具有多个纪元的日本文化,如果差异跨越两个或更多纪元,则 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” 分钟
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 新年的第一整周

另请参阅

适用于