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)

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 列舉值或字串運算式,表示您想要用作 Date1Date2 之間差距單位的時間間隔。

Date1
DateTime

必要。 在計算中需要使用的第一個日期/時間值。

Date2
DateTime

必要。 在計算中需要使用的第二個日期/時間值。

DayOfWeek
FirstDayOfWeek

選擇性。 選自 FirstDayOfWeek 列舉類型的值,指定一週的第一天。 如果未指定,就會使用 Sunday

WeekOfYear
FirstWeekOfYear

選擇性。 選自 FirstWeekOfYear 列舉類型的值,指定一年的第一週。 如果未指定,就會使用 Jan1

傳回

指定兩個 Date 值之間時間間隔數的 long 值。

例外狀況

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 來計算兩個日期之間的天數,或今天與年份結束之間的周數。

行為

  • 參數的處理方式。 DateDiff 從 的值 Date1Date2 減去 的值,以產生差異。 呼叫程式中沒有任何值變更。

  • 傳回值。 由於 Date1Date2 屬於 Date 資料類型,因此它們會保留精確到系統計時器上 100 奈秒刻度的日期和時間值。 不過, DateDiff 一律會以值傳回時間間隔 Long 數目。

    如果 Date1 表示的日期和時間晚于 Date2DateDiff 則傳回負數。

  • 日間隔。 如果 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 因為兩個日期之間的差異小於七天,但它會傳回 1 到 wY ,因為個別日曆周的第一天之間有七天的差異。

  • 較大的間隔。 如果 Interval 設定為 DateInterval.Year ,則傳回值只會從 和 Date2Date1 年份部分計算。 同樣地,的 DateInterval.Month 傳回值只從引數的年份和月份部分計算,以及 DateInterval.Quarter 從包含兩個日期的季計算。

    例如,當比較 12 月 31 日與下一年的 1 月 1 日時,即使最多隻有一天已經過, DateDiff 還是會傳 DateInterval.YearDateInterval.QuarterDateInterval.Month 回 1。

    對於具有多個紀元的日文等文化特性,如果差異跨越兩個以上的紀元, DateDiff 此方法不會傳回年份的差異。 相反地,您可以計算 屬性傳 Year 回的值差異,如下列範例所示: date2.Year - date1.Year

  • 其他間隔。 由於 結構支援 DateTime 每個 Date 值,因此其方法會提供您尋找時間間隔的其他選項。 例如,您可以在其中一種多載形式中使用 Subtract 方法: DateTime.SubtractDate 變數減去 TimeSpan 以傳回另一個 DateDate 值,並 DateTime.Subtract 減去值以傳回 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」
DateInterval.Second "s" Second
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 Tuesday
FirstDayOfWeek.Wednesday 4 星期三
FirstDayOfWeek.Thursday 5 Thursday
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)

從 減 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 列舉值或字串運算式,表示您想要用作 Date1Date2 之間差距單位的時間間隔。

Date1
Object

必要。 在計算中需要使用的第一個日期/時間值。

Date2
Object

必要。 在計算中需要使用的第二個日期/時間值。

DayOfWeek
FirstDayOfWeek

選擇性。 選自 FirstDayOfWeek 列舉類型的值,指定一週的第一天。 如果未指定,就會使用 Sunday

WeekOfYear
FirstWeekOfYear

選擇性。 選自 FirstWeekOfYear 列舉類型的值,指定一年的第一週。 如果未指定,就會使用 Jan1

傳回

指定兩個 Date 值之間時間間隔數的 long 值。

例外狀況

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 來計算兩個日期之間的天數,或今天與年份結束之間的周數。

行為

  • 參數的處理方式。 DateDiff 從 的值 Date1Date2 減去 ,以產生差異。 呼叫程式中兩個值都不會變更。

  • 傳回值。 由於 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 因為兩個日期之間的差異小於七天,但會傳回 1, wY 因為個別行事曆周的第一天之間有七天的差異。

  • 較大的間隔。 如果 Interval 設定為 DateInterval.Year ,則傳回值只會從 和 Date2Date1 年份部分計算。 同樣地,的 DateInterval.Month 傳回值只會從引數的年份和月份部分計算,以及 DateInterval.Quarter 從包含兩個日期的季計算。

    例如,當比較下一年 12 月 31 日與 1 月 1 日時, DateDiff 即使最多隻經過一天,還是 DateInterval.Month 會傳回 1 DateInterval.YearDateInterval.Quarter

    對於具有多個紀元的日文這類文化特性,如果差異跨越兩個或多個紀元, DateDiff 此方法就不會傳回年份的差異。 相反地,您可以計算 屬性傳 Year 回的值差異,如下列範例所示: date2.Year - date1.Year

  • 其他間隔。 由於結構支援 DateTime 每個 Date 值,因此其方法可讓您尋找時間間隔的其他選項。 例如,您可以在其中一種多載形式中使用 Subtract 方法: DateTime.SubtractDate 變數減 TimeSpan 去 以傳回另一 DateDate 值,並 DateTime.Subtract 減去值以傳回 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」
DateInterval.Second "s" Second
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 Tuesday
FirstDayOfWeek.Wednesday 4 星期三
FirstDayOfWeek.Thursday 5 Thursday
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 新年的第一個完整周

另請參閱

適用於