DateAndTime.DateDiff Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca wartość określającą liczbę interwałów czasu między dwiema wartościami Date
.
Przeciążenia
DateDiff(DateInterval, DateTime, DateTime, FirstDayOfWeek, FirstWeekOfYear) |
Odejmuje |
DateDiff(String, Object, Object, FirstDayOfWeek, FirstWeekOfYear) |
Odejmuje |
DateDiff(DateInterval, DateTime, DateTime, FirstDayOfWeek, FirstWeekOfYear)
- Źródło:
- DateAndTime.vb
- Źródło:
- DateAndTime.vb
- Źródło:
- DateAndTime.vb
Odejmuje Date1
z Date2
, aby nadać długą wartość określającą liczbę interwałów czasu między dwiema wartościami 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
Parametry
- Interval
- DateInterval
Wymagane. Wartość wyliczenia DateInterval lub wyrażenie ciągu reprezentujące interwał czasu, którego chcesz użyć jako jednostki różnicy między Date1
a Date2
.
- Date1
- DateTime
Wymagane. Pierwsza wartość daty/godziny, której chcesz użyć w obliczeniu.
- Date2
- DateTime
Wymagane. Druga wartość daty/godziny, której chcesz użyć w obliczeniu.
- DayOfWeek
- FirstDayOfWeek
Fakultatywny. Wartość wybrana z wyliczenia FirstDayOfWeek, która określa pierwszy dzień tygodnia. Jeśli nie zostanie określony, zostanie użyta Sunday.
- WeekOfYear
- FirstWeekOfYear
Fakultatywny. Wartość wybrana z wyliczenia FirstWeekOfYear, która określa pierwszy tydzień roku. Jeśli nie zostanie określony, zostanie użyta Jan1.
Zwraca
Długa wartość określająca liczbę interwałów czasu między dwiema wartościami Date
.
Wyjątki
Date1
, Date2
lub DayofWeek
jest poza zakresem.
Date1
lub Date2
jest nieprawidłowym typem.
Przykłady
W tym przykładzie użyto funkcji DateDiff
, aby wyświetlić liczbę dni między daną datą a dzisiaj.
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
Uwagi
Możesz użyć funkcji DateDiff
, aby określić liczbę określonych interwałów czasu między dwiema wartościami daty/godziny. Na przykład możesz użyć DateDiff
, aby obliczyć liczbę dni między dwiema datami lub liczbę tygodni między dniem dzisiejszym a końcem roku.
Zachowanie
Leczenie parametrów.
DateDiff
odejmuje wartośćDate1
z wartościDate2
, aby uzyskać różnicę. Żadna wartość nie jest zmieniana w programie wywołującym.Zwracane wartości. Ponieważ
Date1
iDate2
są typu danychDate
, przechowują wartości daty i godziny dokładne dla 100-nanosekundowych kleszczy w czasomierzu systemowym. JednakDateDiff
zawsze zwraca liczbę interwałów czasu jako wartośćLong
.Jeśli
Date1
reprezentuje późniejszą datę i godzinę niżDate2
,DateDiff
zwraca liczbę ujemną.Interwały dni. Jeśli
Interval
jest ustawiona naDateInterval.DayOfYear
, jest traktowana tak samo jakDateInterval.Day
, ponieważDayOfYear
nie jest zrozumiałą jednostką dla przedziału czasu.Interwały tygodnia. Jeśli
Interval
jest ustawiona na wartośćDateInterval.WeekOfYear
, wartość zwracana reprezentuje liczbę tygodni między pierwszym dniem tygodnia zawierającymDate1
a pierwszym dniem tygodnia zawierającymDate2
. W poniższym przykładzie pokazano, w jaki sposób generuje to inne wyniki niż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)
W poprzednim przykładzie
DateDiff
zwraca wartość 0 dowD
, ponieważ różnica między dwiema datami jest mniejsza niż siedem dni, ale zwraca wartość 1 dowY
, ponieważ istnieje siedmiodniowa różnica między pierwszymi dniami odpowiednich tygodni kalendarzowych.Większe interwały. Jeśli
Interval
jest ustawiona na wartośćDateInterval.Year
, wartość zwracana jest obliczana wyłącznie z części rokuDate1
iDate2
. Podobnie wartość zwracana dlaDateInterval.Month
jest obliczana wyłącznie z części roku i miesiąca argumentów oraz dlaDateInterval.Quarter
z kwartałów zawierających dwie daty.Na przykład podczas porównywania 31 grudnia do 1 stycznia następnego roku
DateDiff
zwraca wartość 1 dlaDateInterval.Year
,DateInterval.Quarter
lubDateInterval.Month
, mimo że upłynął co najwyżej jeden dzień.W przypadku kultur, takich jak Japoński, które mają wiele epok, metoda
DateDiff
nie zwraca różnicy w latach, jeśli różnica obejmuje co najmniej dwie epoki. Zamiast tego można obliczyć różnicę wartości zwracanych przez właściwość Year, jak pokazano w poniższym przykładzie:date2.Year - date1.Year
.Inne interwały. Ponieważ każda wartość
Date
jest obsługiwana przez strukturę DateTime, jej metody zapewniają dodatkowe opcje w wyszukiwaniu interwałów czasu. Na przykład można użyć metodySubtract
w jednej z jej przeciążonych formularzy: DateTime.Subtract odejmuje TimeSpan ze zmiennejDate
, aby zwrócić inną wartośćDate
, a DateTime.Subtract odejmuje wartośćDate
, aby zwrócić TimeSpan. Możesz czas na proces, aby dowiedzieć się, ile milisekund zajmuje, jak pokazano w poniższym przykładzie.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
Argument Interval
może mieć jedno z następujących ustawień.
Wartość wyliczenia | Wartość ciągu | Jednostka różnicy czasu |
---|---|---|
DateInterval.Day |
"d" | Dzień |
DateInterval.DayOfYear |
"y" | Dzień |
DateInterval.Hour |
"h" | Godzina |
DateInterval.Minute |
"n" | Minuta |
DateInterval.Month |
"m" | Miesiąc |
DateInterval.Quarter |
"q" | Ćwiartka |
DateInterval.Second |
"s" | Sekunda |
DateInterval.Weekday |
"w" | Tydzień |
DateInterval.WeekOfYear |
"ww" | Tydzień kalendarzowy |
DateInterval.Year |
"yyyy" | Rok |
Argument DayOfWeek
może mieć jedno z następujących ustawień.
Wartość wyliczenia | Wartość | Opis |
---|---|---|
FirstDayOfWeek.System |
0 | Pierwszy dzień tygodnia określony w ustawieniach systemowych |
FirstDayOfWeek.Sunday |
1 | Niedziela (wartość domyślna) |
FirstDayOfWeek.Monday |
2 | Poniedziałek (zgodny ze standardem ISO 8601, sekcja 3.17) |
FirstDayOfWeek.Tuesday |
3 | Wtorek |
FirstDayOfWeek.Wednesday |
4 | Środa |
FirstDayOfWeek.Thursday |
5 | Czwartek |
FirstDayOfWeek.Friday |
6 | Piątek |
FirstDayOfWeek.Saturday |
7 | Sobota |
Argument WeekOfYear
może mieć jedno z następujących ustawień.
Wartość wyliczenia | Wartość | Opis |
---|---|---|
FirstWeekOfYear.System |
0 | Pierwszy tydzień roku określony w ustawieniach systemowych |
FirstWeekOfYear.Jan1 |
1 | Tydzień, w którym występuje 1 stycznia (ustawienie domyślne) |
FirstWeekOfYear.FirstFourDays |
2 | Tydzień, który ma co najmniej cztery dni w nowym roku (zgodnie ze standardem ISO 8601, sekcja 3.17) |
FirstWeekOfYear.FirstFullWeek |
3 | Pierwszy pełny tydzień w nowym roku |
Zobacz też
- DateAdd
- DatePart
- Day(DateTime)
- Format(Object, String)
- Now
- Weekday(DateTime, FirstDayOfWeek)
- Year(DateTime)
- DateTime
- TimeSpan
- — podsumowanie typu danych (Visual Basic)
Dotyczy
DateDiff(String, Object, Object, FirstDayOfWeek, FirstWeekOfYear)
- Źródło:
- DateAndTime.vb
- Źródło:
- DateAndTime.vb
- Źródło:
- DateAndTime.vb
Odejmuje Date1
z Date2
, aby nadać długą wartość określającą liczbę interwałów czasu między dwiema wartościami 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
Parametry
- Interval
- String
Wymagane. Wartość wyliczenia DateInterval lub wyrażenie ciągu reprezentujące interwał czasu, którego chcesz użyć jako jednostki różnicy między Date1
a Date2
.
- Date1
- Object
Wymagane. Pierwsza wartość daty/godziny, której chcesz użyć w obliczeniu.
- Date2
- Object
Wymagane. Druga wartość daty/godziny, której chcesz użyć w obliczeniu.
- DayOfWeek
- FirstDayOfWeek
Fakultatywny. Wartość wybrana z wyliczenia FirstDayOfWeek, która określa pierwszy dzień tygodnia. Jeśli nie zostanie określony, zostanie użyta Sunday.
- WeekOfYear
- FirstWeekOfYear
Fakultatywny. Wartość wybrana z wyliczenia FirstWeekOfYear, która określa pierwszy tydzień roku. Jeśli nie zostanie określony, zostanie użyta Jan1.
Zwraca
Długa wartość określająca liczbę interwałów czasu między dwiema wartościami Date
.
Wyjątki
Date1
, Date2
lub DayofWeek
jest poza zakresem.
Date1
lub Date2
jest nieprawidłowym typem.
Przykłady
W tym przykładzie użyto funkcji DateDiff
, aby wyświetlić liczbę dni między daną datą a dzisiaj.
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
Uwagi
Możesz użyć funkcji DateDiff
, aby określić liczbę określonych interwałów czasu między dwiema wartościami daty/godziny. Na przykład możesz użyć DateDiff
, aby obliczyć liczbę dni między dwiema datami lub liczbę tygodni między dniem dzisiejszym a końcem roku.
Zachowanie
Leczenie parametrów.
DateDiff
odejmuje wartośćDate1
z wartościDate2
, aby uzyskać różnicę. Żadna wartość nie jest zmieniana w programie wywołującym.Zwracane wartości. Ponieważ
Date1
iDate2
są typu danychDate
, przechowują wartości daty i godziny dokładne dla 100-nanosekundowych kleszczy w czasomierzu systemowym. JednakDateDiff
zawsze zwraca liczbę interwałów czasu jako wartośćLong
.Jeśli
Date1
reprezentuje późniejszą datę i godzinę niżDate2
,DateDiff
zwraca liczbę ujemną.Interwały dni. Jeśli
Interval
jest ustawiona naDateInterval.DayOfYear
, jest traktowana tak samo jakDateInterval.Day
, ponieważDayOfYear
nie jest zrozumiałą jednostką dla przedziału czasu.Interwały tygodnia. Jeśli
Interval
jest ustawiona na wartośćDateInterval.WeekOfYear
, wartość zwracana reprezentuje liczbę tygodni między pierwszym dniem tygodnia zawierającymDate1
a pierwszym dniem tygodnia zawierającymDate2
. W poniższym przykładzie pokazano, w jaki sposób generuje to inne wyniki niż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)
W poprzednim przykładzie
DateDiff
zwraca wartość 0 dowD
, ponieważ różnica między dwiema datami jest mniejsza niż siedem dni, ale zwraca wartość 1 dowY
, ponieważ istnieje siedmiodniowa różnica między pierwszymi dniami odpowiednich tygodni kalendarzowych.Większe interwały. Jeśli
Interval
jest ustawiona na wartośćDateInterval.Year
, wartość zwracana jest obliczana wyłącznie z części rokuDate1
iDate2
. Podobnie wartość zwracana dlaDateInterval.Month
jest obliczana wyłącznie z części roku i miesiąca argumentów oraz dlaDateInterval.Quarter
z kwartałów zawierających dwie daty.Na przykład podczas porównywania 31 grudnia do 1 stycznia następnego roku
DateDiff
zwraca wartość 1 dlaDateInterval.Year
,DateInterval.Quarter
lubDateInterval.Month
, mimo że upłynął co najwyżej jeden dzień.W przypadku kultur, takich jak Japoński, które mają wiele epok, metoda
DateDiff
nie zwraca różnicy w latach, jeśli różnica obejmuje co najmniej dwie epoki. Zamiast tego można obliczyć różnicę wartości zwracanych przez właściwość Year, jak pokazano w poniższym przykładzie:date2.Year - date1.Year
.Inne interwały. Ponieważ każda wartość
Date
jest obsługiwana przez strukturę DateTime, jej metody zapewniają dodatkowe opcje w wyszukiwaniu interwałów czasu. Na przykład można użyć metodySubtract
w jednej z jej przeciążonych formularzy: DateTime.Subtract odejmuje TimeSpan ze zmiennejDate
, aby zwrócić inną wartośćDate
, a DateTime.Subtract odejmuje wartośćDate
, aby zwrócić TimeSpan. Możesz czas na proces, aby dowiedzieć się, ile milisekund zajmuje, jak pokazano w poniższym przykładzie.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
Argument Interval
może mieć jedno z następujących ustawień.
Wartość wyliczenia | Wartość ciągu | Jednostka różnicy czasu |
---|---|---|
DateInterval.Day |
"d" | Dzień |
DateInterval.DayOfYear |
"y" | Dzień |
DateInterval.Hour |
"h" | Godzina |
DateInterval.Minute |
"n" | Minuta |
DateInterval.Month |
"m" | Miesiąc |
DateInterval.Quarter |
"q" | Ćwiartka |
DateInterval.Second |
"s" | Sekunda |
DateInterval.Weekday |
"w" | Tydzień |
DateInterval.WeekOfYear |
"ww" | Tydzień kalendarzowy |
DateInterval.Year |
"yyyy" | Rok |
Argument DayOfWeek
może mieć jedno z następujących ustawień.
Wartość wyliczenia | Wartość | Opis |
---|---|---|
FirstDayOfWeek.System |
0 | Pierwszy dzień tygodnia określony w ustawieniach systemowych |
FirstDayOfWeek.Sunday |
1 | Niedziela (wartość domyślna) |
FirstDayOfWeek.Monday |
2 | Poniedziałek (zgodny ze standardem ISO 8601, sekcja 3.17) |
FirstDayOfWeek.Tuesday |
3 | Wtorek |
FirstDayOfWeek.Wednesday |
4 | Środa |
FirstDayOfWeek.Thursday |
5 | Czwartek |
FirstDayOfWeek.Friday |
6 | Piątek |
FirstDayOfWeek.Saturday |
7 | Sobota |
Argument WeekOfYear
może mieć jedno z następujących ustawień.
Wartość wyliczenia | Wartość | Opis |
---|---|---|
FirstWeekOfYear.System |
0 | Pierwszy tydzień roku określony w ustawieniach systemowych |
FirstWeekOfYear.Jan1 |
1 | Tydzień, w którym występuje 1 stycznia (ustawienie domyślne) |
FirstWeekOfYear.FirstFourDays |
2 | Tydzień, który ma co najmniej cztery dni w nowym roku (zgodnie ze standardem ISO 8601, sekcja 3.17) |
FirstWeekOfYear.FirstFullWeek |
3 | Pierwszy pełny tydzień w nowym roku |
Zobacz też
- DateAdd
- DatePart
- Day(DateTime)
- Format(Object, String)
- Now
- Weekday(DateTime, FirstDayOfWeek)
- Year(DateTime)
- DateTime
- TimeSpan
- — podsumowanie typu danych (Visual Basic)