語言

DateAndTime.DateDiff 方法

定義

回傳一個值,指定兩個 Date 值之間的時間間隔數。

多載

名稱 Description
DateDiff(DateInterval, DateTime, DateTime, FirstDayOfWeek, FirstWeekOfYear)

從 Date1Date2 減去 ,得到一個長值,指定兩個 Date 值之間的時間間隔數。

DateDiff(String, Object, Object, FirstDayOfWeek, FirstWeekOfYear)

從 Date1Date2 減去 ,得到一個長值,指定兩個 Date 值之間的時間間隔數。

DateDiff(DateInterval, DateTime, DateTime, FirstDayOfWeek, FirstWeekOfYear)

來源:
DateAndTime.vb
來源:
DateAndTime.vb
來源:
DateAndTime.vb
來源:
DateAndTime.vb
來源:
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

Required. 一個DateInterval枚舉值或字串表達式,代表你想用來作為與 之間差異Date1Date2單位的時間區間。

Date1
DateTime

Required. 您想要在計算中使用的第一個日期/時間值。

Date2
DateTime

Required. 您想要在計算中使用的第二個日期/時間值。

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 計算兩個日期之間的天數,或是今天到年底之間的週數。

行為

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

  • 傳回值。 由於 Date1 和 Date2 屬於 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,則返回值純粹由 和 Date1的Date2年份部分計算。 同樣地,的 DateInterval.Month 返回值純粹由參數中的年份和月份部分計算,而 則 DateInterval.Quarter 由包含兩個日期的季度計算。

    例如,當比較 12 月 31 日與隔年 1 月 1 日時,DateDiff即使最多只過了一天,對 DateInterval.YearDateInterval.QuarterDateInterval.Month、 、 或 會回傳 1。

    對於像日本這樣有多個時代的文化,若差異跨越兩個或以上時代,該 DateDiff 方法不會回傳年份差異。 相反地,你可以計算該性質所回傳 Year 的值差異,如下範例所示: date2.Year - date1.Year。

  • 其他間隔。 由於每個 Date 值都有結構支持 DateTime ,其方法提供了尋找時間區間的額外選項。 例如,你可以以任一種過載形式使用該方法:從變數中減去 a SubtractDateTime.Subtract 以返回另一個TimeSpan值,再DateDate減去一個值以返回 DateTime.Subtract。 DateTimeSpan 您可以計時程序來瞭解其需要多少毫秒,如下列範例所示。

    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” Day
DateInterval.DayOfYear “y” Day
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 論證可以有以下其中一種設定。

列舉值 價值觀 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)

來源:
DateAndTime.vb
來源:
DateAndTime.vb
來源:
DateAndTime.vb
來源:
DateAndTime.vb
來源:
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

Required. 一個DateInterval枚舉值或字串表達式,代表你想用來作為與 之間差異Date1Date2單位的時間區間。

Date1
Object

Required. 您想要在計算中使用的第一個日期/時間值。

Date2
Object

Required. 您想要在計算中使用的第二個日期/時間值。

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 計算兩個日期之間的天數,或是今天到年底之間的週數。

行為

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

  • 傳回值。 由於 Date1 和 Date2 屬於 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,則返回值純粹由 和 Date1的Date2年份部分計算。 同樣地,的 DateInterval.Month 返回值純粹由參數中的年份和月份部分計算,而 則 DateInterval.Quarter 由包含兩個日期的季度計算。

    例如,當比較 12 月 31 日與隔年 1 月 1 日時,DateDiff即使最多只過了一天,對 DateInterval.YearDateInterval.QuarterDateInterval.Month、 、 或 會回傳 1。

    對於像日本這樣有多個時代的文化,若差異跨越兩個或以上時代,該 DateDiff 方法不會回傳年份差異。 相反地,你可以計算該性質所回傳 Year 的值差異,如下範例所示: date2.Year - date1.Year。

  • 其他間隔。 由於每個 Date 值都有結構支持 DateTime ,其方法提供了尋找時間區間的額外選項。 例如,你可以以任一種過載形式使用該方法:從變數中減去 a SubtractDateTime.Subtract 以返回另一個TimeSpan值,再DateDate減去一個值以返回 DateTime.Subtract。 DateTimeSpan 您可以計時程序來瞭解其需要多少毫秒,如下列範例所示。

    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” Day
DateInterval.DayOfYear “y” Day
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 論證可以有以下其中一種設定。

列舉值 價值觀 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 新年的第一整周

另請參閱

適用於