Udostępnij za pośrednictwem


DateAndTime.DateDiff Metoda

Definicja

Zwraca wartość określającą liczbę interwałów czasu między dwiema wartościami Date.

Przeciążenia

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

Odejmuje Date1 z Date2, aby nadać długą wartość określającą liczbę interwałów czasu między dwiema wartościami Date.

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

Odejmuje Date1 z Date2, aby nadać długą wartość określającą liczbę interwałów czasu między dwiema wartościami Date.

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, Date2lub 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ści Date2, aby uzyskać różnicę. Żadna wartość nie jest zmieniana w programie wywołującym.

  • Zwracane wartości. Ponieważ Date1 i Date2 są typu danych Date, przechowują wartości daty i godziny dokładne dla 100-nanosekundowych kleszczy w czasomierzu systemowym. Jednak DateDiff 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 na DateInterval.DayOfYear, jest traktowana tak samo jak DateInterval.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ącym Date1 a pierwszym dniem tygodnia zawierającym Date2. 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 do wD, ponieważ różnica między dwiema datami jest mniejsza niż siedem dni, ale zwraca wartość 1 do wY, 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 roku Date1 i Date2. Podobnie wartość zwracana dla DateInterval.Month jest obliczana wyłącznie z części roku i miesiąca argumentów oraz dla DateInterval.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 dla DateInterval.Year, DateInterval.Quarterlub DateInterval.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ć metody Subtract w jednej z jej przeciążonych formularzy: DateTime.Subtract odejmuje TimeSpan ze zmiennej Date, 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ż

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, Date2lub 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ści Date2, aby uzyskać różnicę. Żadna wartość nie jest zmieniana w programie wywołującym.

  • Zwracane wartości. Ponieważ Date1 i Date2 są typu danych Date, przechowują wartości daty i godziny dokładne dla 100-nanosekundowych kleszczy w czasomierzu systemowym. Jednak DateDiff 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 na DateInterval.DayOfYear, jest traktowana tak samo jak DateInterval.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ącym Date1 a pierwszym dniem tygodnia zawierającym Date2. 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 do wD, ponieważ różnica między dwiema datami jest mniejsza niż siedem dni, ale zwraca wartość 1 do wY, 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 roku Date1 i Date2. Podobnie wartość zwracana dla DateInterval.Month jest obliczana wyłącznie z części roku i miesiąca argumentów oraz dla DateInterval.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 dla DateInterval.Year, DateInterval.Quarterlub DateInterval.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ć metody Subtract w jednej z jej przeciążonych formularzy: DateTime.Subtract odejmuje TimeSpan ze zmiennej Date, 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ż

Dotyczy