DateAndTime.DateDiff Метод

Определение

Возвращает значение, указывающее количество интервалов времени между двумя значениями Date.

Перегрузки

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

Вычитает Date1 из Date2 , чтобы получить длинное значение, указывающее количество интервалов времени между двумя Date значениями.

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

Вычитает Date1 из Date2 , чтобы получить длинное значение, указывающее количество интервалов времени между двумя Date значениями.

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

Исходный код:
DateAndTime.vb
Исходный код:
DateAndTime.vb
Исходный код:
DateAndTime.vb

Вычитает 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.

Возвращаемое значение

Значение типа long, указывающее количество интервалов времени между двумя значениями Date.

Исключения

Значение 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.DayDayOfYear не является значимой единицей для интервала времени.

  • Интервалы недели. Если 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)
    

    В предыдущем примере возвращается значение 0 , DateDiffwD так как разница между двумя датами меньше семи дней, но возвращает 1 к wY , так как между первыми днями соответствующих календарных недель существует семидневная разница.

  • Большие интервалы. Если Interval задано значение DateInterval.Year, возвращаемое значение вычисляется исключительно из частей Date1 года и Date2. Аналогичным образом, возвращаемое значение для DateInterval.Month вычисляется исключительно из частей аргументов года и месяца, а для DateInterval.Quarter — из кварталов, содержащих две даты.

    Например, при сравнении 31 декабря с 1 января следующего года DateDiff возвращается значение 1 для DateInterval.Year, DateInterval.Quarterили DateInterval.Month, хотя прошло не более одного дня.

    Для таких культур, как японский язык с несколькими эрами, метод не возвращает разницу в годах, DateDiff если разница охватывает две или более эпохи. Вместо этого можно вычислить разницу в значениях, возвращаемых свойством Year , как показано в следующем примере: date2.Year - date1.Year.

  • Другие интервалы. Так как каждое Date значение поддерживается структурой DateTime , ее методы предоставляют дополнительные возможности для поиска интервалов времени. Например, метод можно использовать Subtract в любой из его перегруженных форм: DateTime.Subtract вычитает TimeSpan из переменной Date , чтобы вернуть другое Date значение, и DateTime.Subtract вычитает Date значение для возврата 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" Минута
DateInterval.Month "m" Месяц
DateInterval.Quarter "q" Quarter
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 Вторник
FirstDayOfWeek.Wednesday 4 Среда
FirstDayOfWeek.Thursday 5 Четверг
FirstDayOfWeek.Friday 6 Пятница
FirstDayOfWeek.Saturday 7 Суббота

Аргумент WeekOfYear может иметь один из следующих параметров.

Значение перечисления Значение Описание
FirstWeekOfYear.System 0 Первая неделя года, указанная в параметрах системы
FirstWeekOfYear.Jan1 1 Неделя, в которой наступает 1 января (по умолчанию)
FirstWeekOfYear.FirstFourDays 2 Неделя, которая имеет не менее четырех дней в новом году (соответствует стандарту ISO 8601, раздел 3.17)
FirstWeekOfYear.FirstFullWeek 3 Первая полная неделя в новом году

См. также раздел

Применяется к

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

Исходный код:
DateAndTime.vb
Исходный код:
DateAndTime.vb
Исходный код:
DateAndTime.vb

Вычитает 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.

Возвращаемое значение

Значение типа long, указывающее количество интервалов времени между двумя значениями Date.

Исключения

Значение 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.DayDayOfYear не является значимой единицей для интервала времени.

  • Интервалы недели. Если 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)
    

    В предыдущем примере возвращается значение 0 , DateDiffwD так как разница между двумя датами меньше семи дней, но возвращает 1 к wY , так как между первыми днями соответствующих календарных недель существует семидневная разница.

  • Большие интервалы. Если Interval задано значение DateInterval.Year, возвращаемое значение вычисляется исключительно из частей Date1 года и Date2. Аналогичным образом, возвращаемое значение для DateInterval.Month вычисляется исключительно из частей аргументов года и месяца, а для DateInterval.Quarter — из кварталов, содержащих две даты.

    Например, при сравнении 31 декабря с 1 января следующего года DateDiff возвращается значение 1 для DateInterval.Year, DateInterval.Quarterили DateInterval.Month, хотя прошло не более одного дня.

    Для таких культур, как японский язык с несколькими эрами, метод не возвращает разницу в годах, DateDiff если разница охватывает две или более эпохи. Вместо этого можно вычислить разницу в значениях, возвращаемых свойством Year , как показано в следующем примере: date2.Year - date1.Year.

  • Другие интервалы. Так как каждое Date значение поддерживается структурой DateTime , ее методы предоставляют дополнительные возможности для поиска интервалов времени. Например, метод можно использовать Subtract в любой из его перегруженных форм: DateTime.Subtract вычитает TimeSpan из переменной Date , чтобы вернуть другое Date значение, и DateTime.Subtract вычитает Date значение для возврата 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" Минута
DateInterval.Month "m" Месяц
DateInterval.Quarter "q" Quarter
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 Вторник
FirstDayOfWeek.Wednesday 4 Среда
FirstDayOfWeek.Thursday 5 Четверг
FirstDayOfWeek.Friday 6 Пятница
FirstDayOfWeek.Saturday 7 Суббота

Аргумент WeekOfYear может иметь один из следующих параметров.

Значение перечисления Значение Описание
FirstWeekOfYear.System 0 Первая неделя года, указанная в параметрах системы
FirstWeekOfYear.Jan1 1 Неделя, в которой наступает 1 января (по умолчанию)
FirstWeekOfYear.FirstFourDays 2 Неделя, которая имеет не менее четырех дней в новом году (соответствует стандарту ISO 8601, раздел 3.17)
FirstWeekOfYear.FirstFullWeek 3 Первая полная неделя в новом году

См. также раздел

Применяется к