Метод isBetween используется для проверки, находится ли
дата в определённом диапазоне. Он особенно полезен при работе с
периодами времени: фильтрацией событий, проверкой сроков действия,
ограничением интервалов, анализом расписаний и календарных данных.
По умолчанию метод отсутствует в ядре библиотеки и подключается через плагин.
const dayjs = require('dayjs')
const isBetween = require('dayjs/plugin/isBetween')
dayjs.extend(isBetween)
dayjs(date).isBetween(startDate, endDate)
Базовый вариант возвращает true, если дата находится
между двумя другими датами, и false — в противном
случае.
Пример:
const result = dayjs('2025-06-15')
.isBetween('2025-06-01', '2025-06-30')
console.log(result) // true
Метод сравнивает текущий объект Day.js с начальной и конечной датой диапазона.
dayjs(target).isBetween(start, end)
Где:
target — проверяемая дата;start — начало диапазона;end — конец диапазона.const date = dayjs('2025-07-10')
console.log(
date.isBetween('2025-07-01', '2025-07-31')
)
Результат:
true
Если дата выходит за пределы диапазона:
const date = dayjs('2025-08-05')
console.log(
date.isBetween('2025-07-01', '2025-07-31')
)
Результат:
false
По умолчанию isBetween не включает начальную и конечную
даты.
Это означает:
const date = dayjs('2025-07-01')
console.log(
date.isBetween('2025-07-01', '2025-07-31')
)
Результат:
false
Дата совпадает с началом диапазона, однако метод возвращает
false, потому что границы исключаются.
То же самое относится к конечной дате:
const date = dayjs('2025-07-31')
console.log(
date.isBetween('2025-07-01', '2025-07-31')
)
Результат:
false
Для управления поведением используется четвёртый параметр.
| Обозначение | Поведение |
|---|---|
() |
обе границы исключены |
[] |
обе границы включены |
[) |
включено начало |
(] |
включён конец |
const date = dayjs('2025-07-01')
console.log(
date.isBetween(
'2025-07-01',
'2025-07-31',
null,
'[]'
)
)
Результат:
true
const date = dayjs('2025-07-01')
console.log(
date.isBetween(
'2025-07-01',
'2025-07-31',
null,
'[)'
)
)
Результат:
true
const date = dayjs('2025-07-31')
console.log(
date.isBetween(
'2025-07-01',
'2025-07-31',
null,
'(]'
)
)
Результат:
true
Третий параметр определяет точность сравнения.
dayjs(date).isBetween(start, end, unit)
В качестве unit можно использовать:
yearmonthweekdayhourminutesecondconst date = dayjs('2025-06-15 23:59')
console.log(
date.isBetween(
'2025-06-15 00:00',
'2025-06-16 00:00',
'day'
)
)
Результат:
false
При сравнении по day учитываются только дни, а не
время.
const date = dayjs('2025-06-15')
console.log(
date.isBetween(
'2025-01-01',
'2025-12-31',
'month'
)
)
Результат:
true
const date = dayjs('2025-10-01')
console.log(
date.isBetween(
'2020-01-01',
'2030-01-01',
'year'
)
)
Метод корректно сравнивает часы, минуты и секунды.
const time = dayjs('2025-06-15 14:30')
console.log(
time.isBetween(
'2025-06-15 09:00',
'2025-06-15 18:00'
)
)
Результат:
true
function isWorkingHours(date) {
return dayjs(date).isBetween(
dayjs(date).hour(9).minute(0),
dayjs(date).hour(18).minute(0)
)
}
console.log(
isWorkingHours('2025-06-15 14:00')
)
const now = dayjs()
const active = now.isBetween(
'2025-01-01',
'2025-12-31',
null,
'[]'
)
console.log(active)
const bookingDate = dayjs('2025-08-12')
const available = bookingDate.isBetween(
'2025-08-01',
'2025-08-31',
'day',
'[]'
)
console.log(available)
Метод принимает не только строки, но и полноценные объекты Day.js.
const start = dayjs('2025-06-01')
const end = dayjs('2025-06-30')
const current = dayjs('2025-06-15')
console.log(
current.isBetween(start, end)
)
const start = new Date(2025, 5, 1)
const end = new Date(2025, 5, 30)
console.log(
dayjs().isBetween(start, end)
)
addconst now = dayjs()
const future = now.add(7, 'day')
console.log(
dayjs('2025-06-20').isBetween(now, future)
)
subtractconst now = dayjs()
const pastWeek = now.subtract(7, 'day')
console.log(
dayjs('2025-06-10').isBetween(pastWeek, now)
)
startOfconst date = dayjs()
const result = date.isBetween(
date.startOf('month'),
date.endOf('month')
)
console.log(result)
const now = dayjs()
const isCurrentWeek = now.isBetween(
now.startOf('week'),
now.endOf('week'),
null,
'[]'
)
console.log(isCurrentWeek)
const quarterStart = dayjs().startOf('quarter')
const quarterEnd = dayjs().endOf('quarter')
console.log(
dayjs().isBetween(
quarterStart,
quarterEnd,
null,
'[]'
)
)
Для работы с кварталами потребуется плагин
quarterOfYear.
const dates = [
'2025-06-01',
'2025-06-15',
'2025-07-01',
'2025-08-01'
]
const filtered = dates.filter(date =>
dayjs(date).isBetween(
'2025-06-01',
'2025-07-01',
'day',
'[)'
)
)
console.log(filtered)
Результат:
[
'2025-06-01',
'2025-06-15'
]
function isEventActive(eventStart, eventEnd) {
return dayjs().isBetween(
eventStart,
eventEnd,
null,
'[]'
)
}
console.log(
isEventActive(
'2025-06-01',
'2025-06-30'
)
)
function isNight(date) {
return dayjs(date).isBetween(
dayjs(date).hour(22).minute(0),
dayjs(date).add(1, 'day').hour(6).minute(0)
)
}
Подобные интервалы требуют осторожности, поскольку диапазон пересекает границу суток.
dayjs('2025-06-15').isBetween(
'2025-07-01',
'2025-06-01'
)
Результат:
false
Метод не переставляет даты автоматически. Начало диапазона должно быть меньше конца.
При использовании плагина timezone необходимо следить,
чтобы все даты находились в одном часовом поясе.
dayjs(date).tz('Europe/Moscow')
Иначе сравнение может дать неожиданный результат.
const birthday = dayjs('1995-06-15')
const result = birthday.isBetween(
'1990-01-01',
'2000-01-01',
'year',
'[]'
)
console.log(result)
const subscriptionStart = dayjs('2025-01-01')
const subscriptionEnd = dayjs('2025-12-31')
const isActive = dayjs().isBetween(
subscriptionStart,
subscriptionEnd,
null,
'[]'
)
console.log(isActive)
dayjs().isBetween(...)
Без подключения плагина возникнет ошибка:
TypeError: dayjs(...).isBetween is not a function
dayjs('2025-06-01').isBetween(
'2025-06-01',
'2025-06-30'
)
Результат:
false
Причина — границы по умолчанию исключаются.
dayjs('2025-06-15 23:59').isBetween(
'2025-06-15 00:00',
'2025-06-15 12:00',
'day'
)
Результат может оказаться неожиданным, поскольку сравнение идёт только по дню месяца.
const access = dayjs().isBetween(
'2025-06-01 09:00',
'2025-06-01 18:00'
)
const isSaleActive = dayjs().isBetween(
'2025-11-20',
'2025-11-30',
'day',
'[]'
)
const deadline = dayjs('2025-06-20')
const valid = dayjs().isBetween(
dayjs().subtract(30, 'day'),
deadline,
null,
'[]'
)
isBetween и других методов| Метод | Назначение |
|---|---|
isBefore |
дата раньше другой |
isAfter |
дата позже другой |
isSame |
даты совпадают |
isSameOrBefore |
дата совпадает или раньше |
isSameOrAfter |
дата совпадает или позже |
isBetween |
дата находится внутри диапазона |
Метод работает быстро, поскольку Day.js использует неизменяемые
объекты и компактную внутреннюю реализацию. Даже при массовой фильтрации
дат isBetween показывает хорошую производительность.
Однако при обработке больших массивов желательно:
Пример оптимизации:
const start = dayjs('2025-01-01')
const end = dayjs('2025-12-31')
const result = items.filter(item =>
dayjs(item.date).isBetween(start, end)
)