语言

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
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枚举值或字符串表达式,表示要用作两者之间Date1差异单位的Date2时间间隔。

Date1
DateTime

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

Date2
DateTime

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

DayOfWeek
FirstDayOfWeek

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

WeekOfYear
FirstWeekOfYear

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

返回

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

例外

Date1、 Date2或 DayofWeek 范围不足。

Date1 或 Date2 类型无效。

示例

此示例使用 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 计算两个日期之间的天数,或今天到年底之间的周数。

Behavior

  • 参数处理。 DateDiff从Date1Date2值中减去产生差异的值。 调用程序中没有更改这两个值。

  • 返回值。 由于 Date1 并且 Date2 属于 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 因为两个日历周的第一天之间有七天的差异。

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

    例如,将 12 月 31 日与次年 1 月 1 日进行比较时,DateDiff返回 1 个,DateInterval.YearDateInterval.Quarter或者DateInterval.Month,即使最多只有一天已经过去。

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

  • 其他间隔。 由于结构支持Date每个DateTime值,因此其方法提供了查找时间间隔的其他选项。 例如,可以在任一重载形式中使用Subtract该方法:DateTime.Subtract从TimeSpan变量中减去Date返回另一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" Second
DateInterval.Weekday "w" 周
DateInterval.WeekOfYear “ww” 日历周
DateInterval.Year “yyyy” Year

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

枚举值 价值 Description
FirstDayOfWeek.System 0 系统设置中指定的第一周的第一天
FirstDayOfWeek.Sunday 1 周日 (默认)
FirstDayOfWeek.Monday 2 星期一(符合 ISO 标准 8601 第 3.17 节)
FirstDayOfWeek.Tuesday 3 Tuesday
FirstDayOfWeek.Wednesday 4 Wednesday
FirstDayOfWeek.Thursday 5 Thursday
FirstDayOfWeek.Friday 6 Friday
FirstDayOfWeek.Saturday 7 Saturday

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

枚举值 价值 Description
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
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枚举值或字符串表达式,表示要用作两者之间Date1差异单位的Date2时间间隔。

Date1
Object

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

Date2
Object

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

DayOfWeek
FirstDayOfWeek

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

WeekOfYear
FirstWeekOfYear

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

返回

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

例外

Date1、 Date2或 DayofWeek 范围不足。

Date1 或 Date2 类型无效。

示例

此示例使用 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 计算两个日期之间的天数,或今天到年底之间的周数。

Behavior

  • 参数处理。 DateDiff从Date1Date2值中减去产生差异的值。 调用程序中没有更改这两个值。

  • 返回值。 由于 Date1 并且 Date2 属于 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 因为两个日历周的第一天之间有七天的差异。

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

    例如,将 12 月 31 日与次年 1 月 1 日进行比较时,DateDiff返回 1 个,DateInterval.YearDateInterval.Quarter或者DateInterval.Month,即使最多只有一天已经过去。

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

  • 其他间隔。 由于结构支持Date每个DateTime值,因此其方法提供了查找时间间隔的其他选项。 例如,可以在任一重载形式中使用Subtract该方法:DateTime.Subtract从TimeSpan变量中减去Date返回另一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" Second
DateInterval.Weekday "w" 周
DateInterval.WeekOfYear “ww” 日历周
DateInterval.Year “yyyy” Year

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

枚举值 价值 Description
FirstDayOfWeek.System 0 系统设置中指定的第一周的第一天
FirstDayOfWeek.Sunday 1 周日 (默认)
FirstDayOfWeek.Monday 2 星期一(符合 ISO 标准 8601 第 3.17 节)
FirstDayOfWeek.Tuesday 3 Tuesday
FirstDayOfWeek.Wednesday 4 Wednesday
FirstDayOfWeek.Thursday 5 Thursday
FirstDayOfWeek.Friday 6 Friday
FirstDayOfWeek.Saturday 7 Saturday

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

枚举值 价值 Description
FirstWeekOfYear.System 0 系统设置中指定的第一周年份
FirstWeekOfYear.Jan1 1 1 月 1 日发生的周(默认值)
FirstWeekOfYear.FirstFourDays 2 新年至少有四天的周(符合 ISO 标准 8601 第 3.17 节)
FirstWeekOfYear.FirstFullWeek 3 新年的第一整周

另请参阅

适用于