共用方式為


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

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

Date1
DateTime

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

Date2
DateTime

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

DayOfWeek
FirstDayOfWeek

自選。 從 FirstDayOfWeek 列舉中選出的數值,指定了一週的第一天。 如果未指定,就會使用 Sunday

WeekOfYear
FirstWeekOfYear

自選。 從列舉中選出 FirstWeekOfYear 的值,指定了一年的第一週。 如果未指定,就會使用 Jan1

傳回

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

例外狀況

Date1Date2, 或 DayofWeek 超出範圍。

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從 的Date2值中減去 的Date1值以產生差值。 呼叫程式中不會變更兩個值。

  • 傳回值。 由於 Date1Date2 屬於 Date 資料型態,它們能保持系統計時器中精確到 100 奈秒刻度的日期與時間值。 然而,總是 DateDiff 以時間區間數作為 Long 值回傳。

    Date1 代表較晚的日期與時間,則 DateDiffDate2會返回負數。

  • 日間隔。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

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

    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)

來源:
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

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

Date1
Object

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

Date2
Object

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

DayOfWeek
FirstDayOfWeek

自選。 從 FirstDayOfWeek 列舉中選出的數值,指定了一週的第一天。 如果未指定,就會使用 Sunday

WeekOfYear
FirstWeekOfYear

自選。 從列舉中選出 FirstWeekOfYear 的值,指定了一年的第一週。 如果未指定,就會使用 Jan1

傳回

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

例外狀況

Date1Date2, 或 DayofWeek 超出範圍。

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從 的Date2值中減去 的Date1值以產生差值。 呼叫程式中不會變更兩個值。

  • 傳回值。 由於 Date1Date2 屬於 Date 資料型態,它們能保持系統計時器中精確到 100 奈秒刻度的日期與時間值。 然而,總是 DateDiff 以時間區間數作為 Long 值回傳。

    Date1 代表較晚的日期與時間,則 DateDiffDate2會返回負數。

  • 日間隔。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

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

    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 新年的第一整周

另請參閱

適用於