通过


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

自选。 从 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 计算两个日期之间的天数,或今天到年底之间的周数。

行为

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

  • 返回值。 由于 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.Quarter的年份和月份部分以及包含两个日期的季度计算返回值的返回值DateInterval.Month

    例如,将 12 月 31 日与次年 1 月 1 日进行比较时,DateDiff返回 1 个,DateInterval.YearDateInterval.Quarter或者DateInterval.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
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

自选。 从 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 计算两个日期之间的天数,或今天到年底之间的周数。

行为

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

  • 返回值。 由于 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.Quarter的年份和月份部分以及包含两个日期的季度计算返回值的返回值DateInterval.Month

    例如,将 12 月 31 日与次年 1 月 1 日进行比较时,DateDiff返回 1 个,DateInterval.YearDateInterval.Quarter或者DateInterval.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 新年的第一整周

另请参阅

适用于