DateAndTime.DateDiff 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回指定兩個 Date
值之間時間間隔數的值。
多載
DateDiff(DateInterval, DateTime, DateTime, FirstDayOfWeek, FirstWeekOfYear) |
從 |
DateDiff(String, Object, Object, FirstDayOfWeek, FirstWeekOfYear) |
從 |
DateDiff(DateInterval, DateTime, DateTime, FirstDayOfWeek, FirstWeekOfYear)
從 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
值之間時間間隔數的 long 值。
例外狀況
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
因為兩個日期之間的差異小於七天,但會傳回 1,wY
因為個別行事曆周的第一天之間有七天的差異。較大的間隔。 如果
Interval
設定為DateInterval.Year
,則傳回值只會從 和Date2
的Date1
年份部分計算。 同樣地,的DateInterval.Month
傳回值只會從自變數的年份和月份部分計算,以及DateInterval.Quarter
從包含兩個日期的季計算。例如,當比較下一年 12 月 31 日與 1 月 1 日時,
DateDiff
即使最多只經過一天,還是DateInterval.Month
會傳回 1DateInterval.Year
DateInterval.Quarter
。對於具有多個紀元的日文這類文化特性,如果差異跨越兩個或多個紀元,
DateDiff
此方法就不會傳回年份的差異。 相反地,您可以計算 屬性傳 Year 回的值差異,如下列範例所示:date2.Year - date1.Year
。其他間隔。 由於結構支援DateTime每個
Date
值,因此其方法可讓您尋找時間間隔的其他選項。 例如,您可以在其中一種多載形式中使用Subtract
方法:DateTime.Subtract從Date
變數減TimeSpan去 以傳回另一Date
個Date
值,並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 | 新年的第一周 |
另請參閱
- DateAdd
- DatePart
- Day(DateTime)
- Format(Object, String)
- Now
- Weekday(DateTime, FirstDayOfWeek)
- Year(DateTime)
- DateTime
- TimeSpan
- 資料類型摘要 (Visual Basic)
適用於
DateDiff(String, Object, Object, FirstDayOfWeek, FirstWeekOfYear)
從 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
值之間時間間隔數的 long 值。
例外狀況
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
因為兩個日期之間的差異小於七天,但會傳回 1,wY
因為個別行事曆周的第一天之間有七天的差異。較大的間隔。 如果
Interval
設定為DateInterval.Year
,則傳回值只會從 和Date2
的Date1
年份部分計算。 同樣地,的DateInterval.Month
傳回值只會從自變數的年份和月份部分計算,以及DateInterval.Quarter
從包含兩個日期的季計算。例如,當比較下一年 12 月 31 日與 1 月 1 日時,
DateDiff
即使最多只經過一天,還是DateInterval.Month
會傳回 1DateInterval.Year
DateInterval.Quarter
。對於具有多個紀元的日文這類文化特性,如果差異跨越兩個或多個紀元,
DateDiff
此方法就不會傳回年份的差異。 相反地,您可以計算 屬性傳 Year 回的值差異,如下列範例所示:date2.Year - date1.Year
。其他間隔。 由於結構支援DateTime每個
Date
值,因此其方法可讓您尋找時間間隔的其他選項。 例如,您可以在其中一種多載形式中使用Subtract
方法:DateTime.Subtract從Date
變數減TimeSpan去 以傳回另一Date
個Date
值,並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 | 新年的第一周 |
另請參閱
- DateAdd
- DatePart
- Day(DateTime)
- Format(Object, String)
- Now
- Weekday(DateTime, FirstDayOfWeek)
- Year(DateTime)
- DateTime
- TimeSpan
- 資料類型摘要 (Visual Basic)
適用於
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應