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
从 中减去 Date1
Date2
,以提供一个长值,指定两 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
从 的值Date1
中减去 的值Date2
,以产生差异。 在调用程序中,这两个值都不会更改。返回值。 由于
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
,则返回值仅从 和Date2
的Date1
年份部分计算。 同样,的DateInterval.Month
返回值仅从参数的年和月部分计算,以及DateInterval.Quarter
从包含两个日期的季度计算。例如,将 12 月 31 日与下一年的 1 月 1 日进行比较时,
DateDiff
即使DateInterval.Year
DateInterval.Quarter
最多只经过一天,、 或DateInterval.Month
返回 1。对于具有多个纪元的日语等区域性,如果差异跨越两个或更多个纪元,
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” | 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 | 新年的第一整周 |
另请参阅
- 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
从 Date1
Date2
中减去 ,以提供一个长值,指定两 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
,则返回值仅从 和Date2
的Date1
年份部分计算。 同样,的DateInterval.Month
返回值仅从参数的年份和月份部分计算,以及DateInterval.Quarter
从包含两个日期的季度计算。例如,将 12 月 31 日与下一年的 1 月 1 日进行比较时,
DateDiff
为 、DateInterval.Quarter
或DateInterval.Month
返回 1DateInterval.Year
,即使最多只用了一天。对于具有多个纪元的日本文化,如果差异跨越两个或更多个纪元,
DateDiff
则 该方法不会返回以年为单位的差值。 相反,可以计算 属性返回 Year 的值的差异,如以下示例所示:date2.Year - date1.Year
。其他间隔。 由于结构支持DateTime每个
Date
值,因此其方法提供了查找时间间隔的其他选项。 例如,可以在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” | 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 | 新年的第一个完整周 |
另请参阅
- DateAdd
- DatePart
- Day(DateTime)
- Format(Object, String)
- Now
- Weekday(DateTime, FirstDayOfWeek)
- Year(DateTime)
- DateTime
- TimeSpan
- 数据类型摘要 (Visual Basic)
适用于
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈