DateAndTime.DateDiff 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回一个值,该值指定两个 Date
值之间的时间间隔数。
重载
DateDiff(DateInterval, DateTime, DateTime, FirstDayOfWeek, FirstWeekOfYear) |
从 |
DateDiff(String, Object, Object, FirstDayOfWeek, FirstWeekOfYear) |
从 |
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 枚举值或表示要用作 Date1
和 Date2
差单位的时间间隔的字符串表达式。
- Date1
- DateTime
必填。 要在计算中使用的第一个日期/时间值。
- Date2
- DateTime
必填。 要在计算中使用的第二个日期/时间值。
- DayOfWeek
- FirstDayOfWeek
自选。 从 FirstDayOfWeek 枚举中选择的值,该值指定一周的第一天。 如果未指定,则使用 Sunday。
- WeekOfYear
- FirstWeekOfYear
自选。 从指定年份的第一周的 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
计算两个日期之间的天数,或今天到年底之间的周数。
行为
参数处理。
DateDiff
从Date2
的值中减去Date1
的值,以产生差异。 调用程序中没有更改这两个值。返回值。 由于
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
,因为相应日历周的第一天之间有 7 天的差异。较大的间隔。 如果
Interval
设置为DateInterval.Year
,则返回值仅从Date1
和Date2
的年份部分计算。 同样,DateInterval.Month
的返回值仅从参数的年份和月份部分计算,以及包含两个日期的季度的DateInterval.Quarter
。例如,将 12 月 31 日与次年 1 月 1 日进行比较时,
DateDiff
返回 1,DateInterval.Year
、DateInterval.Quarter
或DateInterval.Month
,尽管最多只用了一天。对于具有多个纪元的日本文化,如果差异跨越两个或更多纪元,则
DateDiff
方法不会返回年份的差异。 相反,可以计算 Year 属性返回的值的差异,如以下示例所示:date2.Year - date1.Year
。其他间隔。 由于 DateTime 结构支持每个
Date
值,因此其方法提供了查找时间间隔的其他选项。 例如,可以在任一重载形式中使用Subtract
方法:DateTime.Subtract 从Date
变量中减去 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 | 新年的第一整周 |
另请参阅
- DateAdd
- DatePart
- Day(DateTime)
- Format(Object, String)
- Now
- Weekday(DateTime, FirstDayOfWeek)
- Year(DateTime)
- DateTime
- TimeSpan
- 数据类型摘要 (Visual Basic)
适用于
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 枚举值或表示要用作 Date1
和 Date2
差单位的时间间隔的字符串表达式。
- Date1
- Object
必填。 要在计算中使用的第一个日期/时间值。
- Date2
- Object
必填。 要在计算中使用的第二个日期/时间值。
- DayOfWeek
- FirstDayOfWeek
自选。 从 FirstDayOfWeek 枚举中选择的值,该值指定一周的第一天。 如果未指定,则使用 Sunday。
- WeekOfYear
- FirstWeekOfYear
自选。 从指定年份的第一周的 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
计算两个日期之间的天数,或今天到年底之间的周数。
行为
参数处理。
DateDiff
从Date2
的值中减去Date1
的值,以产生差异。 调用程序中没有更改这两个值。返回值。 由于
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
,因为相应日历周的第一天之间有 7 天的差异。较大的间隔。 如果
Interval
设置为DateInterval.Year
,则返回值仅从Date1
和Date2
的年份部分计算。 同样,DateInterval.Month
的返回值仅从参数的年份和月份部分计算,以及包含两个日期的季度的DateInterval.Quarter
。例如,将 12 月 31 日与次年 1 月 1 日进行比较时,
DateDiff
返回 1,DateInterval.Year
、DateInterval.Quarter
或DateInterval.Month
,尽管最多只用了一天。对于具有多个纪元的日本文化,如果差异跨越两个或更多纪元,则
DateDiff
方法不会返回年份的差异。 相反,可以计算 Year 属性返回的值的差异,如以下示例所示:date2.Year - date1.Year
。其他间隔。 由于 DateTime 结构支持每个
Date
值,因此其方法提供了查找时间间隔的其他选项。 例如,可以在任一重载形式中使用Subtract
方法:DateTime.Subtract 从Date
变量中减去 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 | 新年的第一整周 |
另请参阅
- DateAdd
- DatePart
- Day(DateTime)
- Format(Object, String)
- Now
- Weekday(DateTime, FirstDayOfWeek)
- Year(DateTime)
- DateTime
- TimeSpan
- 数据类型摘要 (Visual Basic)