DateAndTime.DateDiff Metoda

Definicja

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

Przeciążenia

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

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

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

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

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

Źródło:
DateAndTime.vb
Źródło:
DateAndTime.vb
Źródło:
DateAndTime.vb

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

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. DateInterval Wartość wyliczenia lub wyrażenie ciągu reprezentujące interwał czasu, którego chcesz użyć jako jednostki różnicy między Date1 i 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

Opcjonalny. Wartość wybrana z wyliczenia FirstDayOfWeek , która określa pierwszy dzień tygodnia. Jeśli nie zostanie określony, Sunday zostanie użyty.

WeekOfYear
FirstWeekOfYear

Opcjonalny. Wartość wybrana z wyliczenia FirstWeekOfYear , która określa pierwszy tydzień roku. Jeśli nie zostanie określony, Jan1 zostanie użyty.

Zwraca

Długa wartość określająca liczbę interwałów czasu między dwiema Date wartościami.

Wyjątki

Date1, Date2lub DayofWeek jest poza zakresem.

Date1 lub Date2 jest nieprawidłowym typem.

Przykłady

W tym przykładzie DateDiff użyto funkcji , 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

Za pomocą DateDiff funkcji można określić, ile określonych interwałów czasu istnieje między dwiema wartościami daty/godziny. Na przykład możesz użyć DateDiff polecenia , 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 wygenerować różnicę. Żadna wartość nie jest zmieniana w programie wywołującym.

  • Zwracane wartości. Ponieważ Date1 i Date2Date typu danych, przechowują wartości daty i godziny dokładne dla 100 nanosekund na czasomierzu systemowym. DateDiff Jednak zawsze zwraca liczbę interwałów czasu jako Long wartość.

    Jeśli Date1 reprezentuje późniejszą datę i godzinę niż Date2, DateDiff zwraca liczbę ujemną.

  • Interwały dni. Jeśli Interval jest ustawiona wartość DateInterval.DayOfYear, jest traktowana tak samo jak DateInterval.Day, ponieważ DayOfYear nie jest znaczącą jednostką dla interwału czasu.

  • Interwały tygodnia. Jeśli Interval ustawiono DateInterval.WeekOfYearwartość , wartość zwracana reprezentuje liczbę tygodni między pierwszym dniem tygodnia zawierającym Date1 i pierwszym dniem tygodnia zawierającym Date2. W poniższym przykładzie pokazano, jak to generuje różne wyniki z DateInterval.Weekdayelementu .

    ' 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 zwraca wartość 0, DateDiffwD ponieważ różnica między dwiema datami jest mniejsza niż siedem dni, ale zwraca wartość 1, wY ponieważ istnieje siedem dni różnicy między pierwszymi dniami odpowiednich tygodni kalendarzowych.

  • Większe interwały. Jeśli Interval ustawiono DateInterval.Yearwartość , zwracana wartość jest obliczana wyłącznie z części Date1 roku i Date2. Podobnie wartość zwracana dla DateInterval.Month elementu jest obliczana wyłącznie z części roku i miesiąca argumentów oraz DateInterval.Quarter z kwartałów zawierających dwie daty.

    Na przykład podczas porównywania z dniem 31 grudnia do 1 stycznia następnego roku DateDiff zwraca wartość 1 dla DateInterval.Yearwartości , DateInterval.Quarterlub DateInterval.Month, nawet jeśli upłynął co najwyżej jeden dzień.

    W przypadku kultur, takich jak Japoński, które mają wiele epok, metoda nie zwraca różnicy w latach, DateDiff jeśli różnica obejmuje co najmniej dwie epoki. Zamiast tego można obliczyć różnicę wartości zwracanych przez Year właściwość, jak pokazano w poniższym przykładzie: date2.Year - date1.Year.

  • Inne interwały. Ponieważ każda Date wartość jest obsługiwana DateTime przez strukturę, jej metody zapewniają dodatkowe opcje w wyszukiwaniu interwałów czasu. Można na przykład użyć Subtract metody w jednym z przeciążonych formularzy: DateTime.Subtract odejmuje wartość od zmiennejDate, aby zwrócić inną Date wartość, i DateTime.Subtract odejmuje DateTimeSpan wartość, aby zwrócić TimeSpanwartość . Możesz czas procesu, 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” Month (Miesiąc)
DateInterval.Quarter "q" Quarter (Kwartał)
DateInterval.Second „s” Second
DateInterval.Weekday „w” Tydzień
DateInterval.WeekOfYear "ww" Tydzień kalendarzowy
DateInterval.Year „yyyy” Year (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 (domyślnie)
FirstDayOfWeek.Monday 2 Poniedziałek (zgodne ze standardem ISO 8601, pkt. 3.17)
FirstDayOfWeek.Tuesday 3 Tuesday
FirstDayOfWeek.Wednesday 4 Środa
FirstDayOfWeek.Thursday 5 Thursday
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ń zawierający dzień 1 stycznia (domyślnie)
FirstWeekOfYear.FirstFourDays 2 Tydzień, który ma co najmniej cztery dni w nowym roku (zgodnie ze standardem ISO 8601, pkt. 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 od , Date2 aby podać długą wartość określającą liczbę interwałów czasu między dwiema Date wartościami.

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. DateInterval Wartość wyliczenia lub wyrażenie ciągu reprezentujące interwał czasu, którego chcesz użyć jako jednostki różnicy między Date1 i 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

Opcjonalny. Wartość wybrana z wyliczenia FirstDayOfWeek , która określa pierwszy dzień tygodnia. Jeśli nie zostanie określony, Sunday zostanie użyty.

WeekOfYear
FirstWeekOfYear

Opcjonalny. Wartość wybrana z wyliczenia FirstWeekOfYear , która określa pierwszy tydzień roku. Jeśli nie zostanie określony, Jan1 zostanie użyty.

Zwraca

Długa wartość określająca liczbę interwałów czasu między dwiema Date wartościami.

Wyjątki

Date1, Date2lub DayofWeek jest poza zakresem.

Date1 lub Date2 jest nieprawidłowym typem.

Przykłady

W tym przykładzie DateDiff użyto funkcji , 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

Za pomocą DateDiff funkcji można określić, ile określonych interwałów czasu istnieje między dwiema wartościami daty/godziny. Na przykład możesz użyć DateDiff polecenia , 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 wygenerować różnicę. Żadna wartość nie jest zmieniana w programie wywołującym.

  • Zwracane wartości. Ponieważ Date1 i Date2Date typu danych, przechowują wartości daty i godziny dokładne dla 100 nanosekund na czasomierzu systemowym. DateDiff Jednak zawsze zwraca liczbę interwałów czasu jako Long wartość.

    Jeśli Date1 reprezentuje późniejszą datę i godzinę niż Date2, DateDiff zwraca liczbę ujemną.

  • Interwały dni. Jeśli Interval jest ustawiona wartość DateInterval.DayOfYear, jest traktowana tak samo jak DateInterval.Day, ponieważ DayOfYear nie jest znaczącą jednostką dla interwału czasu.

  • Interwały tygodnia. Jeśli Interval ustawiono DateInterval.WeekOfYearwartość , wartość zwracana reprezentuje liczbę tygodni między pierwszym dniem tygodnia zawierającym Date1 i pierwszym dniem tygodnia zawierającym Date2. W poniższym przykładzie pokazano, jak to generuje różne wyniki z DateInterval.Weekdayelementu .

    ' 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 zwraca wartość 0, DateDiffwD ponieważ różnica między dwiema datami jest mniejsza niż siedem dni, ale zwraca wartość 1, wY ponieważ istnieje siedem dni różnicy między pierwszymi dniami odpowiednich tygodni kalendarzowych.

  • Większe interwały. Jeśli Interval ustawiono DateInterval.Yearwartość , zwracana wartość jest obliczana wyłącznie z części Date1 roku i Date2. Podobnie wartość zwracana dla DateInterval.Month elementu jest obliczana wyłącznie z części roku i miesiąca argumentów oraz DateInterval.Quarter z kwartałów zawierających dwie daty.

    Na przykład podczas porównywania z dniem 31 grudnia do 1 stycznia następnego roku DateDiff zwraca wartość 1 dla DateInterval.Yearwartości , DateInterval.Quarterlub DateInterval.Month, nawet jeśli upłynął co najwyżej jeden dzień.

    W przypadku kultur, takich jak Japoński, które mają wiele epok, metoda nie zwraca różnicy w latach, DateDiff jeśli różnica obejmuje co najmniej dwie epoki. Zamiast tego można obliczyć różnicę wartości zwracanych przez Year właściwość, jak pokazano w poniższym przykładzie: date2.Year - date1.Year.

  • Inne interwały. Ponieważ każda Date wartość jest obsługiwana DateTime przez strukturę, jej metody zapewniają dodatkowe opcje w wyszukiwaniu interwałów czasu. Można na przykład użyć Subtract metody w jednym z przeciążonych formularzy: DateTime.Subtract odejmuje wartość od zmiennejDate, aby zwrócić inną Date wartość, i DateTime.Subtract odejmuje DateTimeSpan wartość, aby zwrócić TimeSpanwartość . Możesz czas procesu, 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” Month (Miesiąc)
DateInterval.Quarter "q" Quarter (Kwartał)
DateInterval.Second „s” Second
DateInterval.Weekday „w” Tydzień
DateInterval.WeekOfYear "ww" Tydzień kalendarzowy
DateInterval.Year „yyyy” Year (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 (domyślnie)
FirstDayOfWeek.Monday 2 Poniedziałek (zgodne ze standardem ISO 8601, pkt. 3.17)
FirstDayOfWeek.Tuesday 3 Tuesday
FirstDayOfWeek.Wednesday 4 Środa
FirstDayOfWeek.Thursday 5 Thursday
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ń zawierający dzień 1 stycznia (domyślnie)
FirstWeekOfYear.FirstFourDays 2 Tydzień, który ma co najmniej cztery dni w nowym roku (zgodnie ze standardem ISO 8601, pkt. 3.17)
FirstWeekOfYear.FirstFullWeek 3 Pierwszy pełny tydzień w nowym roku

Zobacz też

Dotyczy