Функция DateDiff

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

Синтаксис

DateDiff(интервал, дата1, дата2, [ первый_день_недели, [ первая_неделя_года ]] )

Синтаксис функции DateDiff использует следующие именованные аргументы:

Часть Описание
интервал Обязательный аргумент. Строковое выражение, которое обозначает интервал времени, используемый для вычисления разницы значений дата1 и дата2.
дата1, дата2 Обязательный элемент; Variant (Date). Две даты, которые требуется использовать в расчете.
первый_день_недели Необязательный аргумент. Константа, задающая первый день недели. Если она не указана, им является воскресенье.
первая_неделя_года Необязательно. Константа, задающая первую неделю года. Если она не указана, первой неделею является неделя, начинающаяся 1 января.

Параметры

Аргумент интервал имеет следующие параметры:

Setting Описание
yyyy Год
q Квартал
m Месяц
y День года
d День
w День недели
ww Неделя
h Часы
n Минуты
s Секунды

Аргумент первый_день_недели может принимать следующие значения:

Константа Значение Описание
vbUseSystem 0 Используются параметры API NLS.
vbSunday 1 Воскресенье (по умолчанию)
vbMonday 2 Понедельник
vbTuesday 3 Вторник
vbWednesday 4 Среда
vbThursday 5 Четверг
vbFriday 6 Пятница
vbSaturday 7 Суббота
Константа Значение Описание
vbUseSystem 0 Используются параметры API NLS.
vbFirstJan1 1 Начать с недели, содержащей 1 января (по умолчанию).
vbFirstFourDays 2 Первой неделей считается та, которая содержит хотя бы четыре дня нового года.
vbFirstFullWeek 3 Первой неделей считается первая полная неделя года.

Примечания

Используйте функцию DateDiff для определения количества указанных интервалов времени между двумя датами. Например, DateDiff можно использовать для вычисления числа дней между двумя датами или числа недель между сегодняшним днем и концом года.

Для вычисления числа дней между аргументами дата1 и дата2 используется значение "День года" ("y") или "День" ("d"). Если интервал задан как "День недели" ("w"), DateDiff возвращает число недель между двумя датами. Если день дата1 приходится на понедельник, DateDiff считает число понедельников до дня дата2. День, соответствующий значению аргумента дата2, учитывается, а дата1 — нет.

Однако если интервал задан как "Неделя" ("ww"), функция DateDiff возвращает число календарных недель между двумя датами. Для этого рассчитывается число воскресений между днями дата1 и дата2. DateDiff учитывает день дата2, если он приходится на воскресенье; день дата1 не учитывается, даже если он приходится на воскресенье.

Если значение дата1 соответствует более поздней дате, чем значение дата2, функция DateDiff возвращает отрицательное число. Аргумент первый_день_недели влияет на вычисления, если заданы значения "w" и "ww".

Если аргумент дата1 или дата2 содержит литерал даты, указанный год становится постоянной частью этой даты. Однако если аргумент дата1 или дата2 заключен в двойные кавычки (" "), а год опущен, при каждом вычислении выражения дата1 или дата2 в код вставляется текущий год. Это позволяет писать код, который можно использовать для разных лет.

При сравнении 31 декабря с 1 января следующего года функция DateDiff для года ("yyyy") возвращает значение 1, не смотря на то, что разница составляет всего один день.

Примечание

Если в свойстве Calendar задан григорианский календарь, аргументы дата1 и дата2 следует указывать соответствующим образом. Если используется календарь Хиджра, дата должна соответствовать ему.

Пример

В данном примере функция DateDiff отображает число дней между указанной датой и сегодняшним днем.

Dim TheDate As Date    ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.