Библиотека date-fns предоставляет набор функций для преобразования временных интервалов в различные единицы измерения. Такие операции особенно важны при работе с таймерами, аналитикой, дедлайнами, журналами событий, системами бронирования и пользовательскими интерфейсами.
Date-fns не изменяет исходные объекты Date, работает в
функциональном стиле и позволяет выполнять точные вычисления без
сторонних зависимостей.
Для конвертации миллисекунд используется функция
millisecondsToSeconds.
import { millisecondsToSeconds } from 'date-fns'
const result = millisecondsToSeconds(5500)
console.log(result)
Результат:
5
Функция округляет значение вниз до ближайшего целого числа.
millisecondsToSeconds(1999) // 1
millisecondsToSeconds(2000) // 2
millisecondsToSeconds(2500) // 2
Date.now()const start = Date.now()
setTimeout(() => {
const end = Date.now()
const duration = millisecondsToSeconds(end - start)
console.log(`Прошло секунд: ${duration}`)
}, 3500)
Функция secondsToMilliseconds выполняет обратное
преобразование.
import { secondsToMilliseconds } from 'date-fns'
const result = secondsToMilliseconds(10)
console.log(result)
Результат:
10000
const delay = secondsToMilliseconds(5)
setTimeout(() => {
console.log('Прошло 5 секунд')
}, delay)
Для преобразования минут используется
minutesToSeconds.
import { minutesToSeconds } from 'date-fns'
const result = minutesToSeconds(3)
console.log(result)
Результат:
180
const duration = minutesToSeconds(15)
console.log(`Таймер: ${duration} секунд`)
Функция secondsToMinutes конвертирует секунды
обратно.
import { secondsToMinutes } from 'date-fns'
const result = secondsToMinutes(360)
console.log(result)
Результат:
6
secondsToMinutes(59) // 0
secondsToMinutes(60) // 1
secondsToMinutes(119) // 1
Функция hoursToMinutes переводит часы в минуты.
import { hoursToMinutes } from 'date-fns'
const result = hoursToMinutes(2)
console.log(result)
Результат:
120
const workDay = hoursToMinutes(8)
console.log(`Рабочий день: ${workDay} минут`)
Для обратной операции используется minutesToHours.
import { minutesToHours } from 'date-fns'
const result = minutesToHours(180)
console.log(result)
Результат:
3
minutesToHours(59) // 0
minutesToHours(60) // 1
minutesToHours(61) // 1
Функция daysToHours преобразует дни в часы.
import { daysToHours } from 'date-fns'
const result = daysToHours(3)
console.log(result)
Результат:
72
const sprint = daysToHours(14)
console.log(`Спринт длится ${sprint} часов`)
Функция hoursToDays используется для получения
количества дней.
import { hoursToDays } from 'date-fns'
const result = hoursToDays(48)
console.log(result)
Результат:
2
hoursToDays(23) // 0
hoursToDays(24) // 1
hoursToDays(50) // 2
Функция weeksToDays конвертирует недели в дни.
import { weeksToDays } from 'date-fns'
const result = weeksToDays(4)
console.log(result)
Результат:
28
const probation = weeksToDays(12)
console.log(`Испытательный срок: ${probation} дней`)
Функция daysToWeeks выполняет обратную конвертацию.
import { daysToWeeks } from 'date-fns'
const result = daysToWeeks(21)
console.log(result)
Результат:
3
daysToWeeks(6) // 0
daysToWeeks(7) // 1
daysToWeeks(8) // 1
Функция monthsToQuarters используется для работы с
финансовыми и отчётными периодами.
import { monthsToQuarters } from 'date-fns'
const result = monthsToQuarters(6)
console.log(result)
Результат:
2
const quarters = monthsToQuarters(12)
console.log(`Год содержит ${quarters} квартала`)
Функция quartersToMonths выполняет обратное
преобразование.
import { quartersToMonths } from 'date-fns'
const result = quartersToMonths(2)
console.log(result)
Результат:
6
Функция yearsToMonths переводит годы в месяцы.
import { yearsToMonths } from 'date-fns'
const result = yearsToMonths(3)
console.log(result)
Результат:
36
const months = yearsToMonths(2)
console.log(`Подписка рассчитана на ${months} месяцев`)
Функция monthsToYears используется для получения
количества лет.
import { monthsToYears } from 'date-fns'
const result = monthsToYears(48)
console.log(result)
Результат:
4
monthsToYears(11) // 0
monthsToYears(12) // 1
monthsToYears(25) // 2
Функции Date-fns легко комбинируются между собой.
import {
daysToHours,
hoursToMinutes
} from 'date-fns'
const hours = daysToHours(2)
const minutes = hoursToMinutes(hours)
console.log(minutes)
Результат:
2880
Некоторые функции принимают дробные числа.
minutesToSeconds(1.5)
Результат:
90
Однако обратные функции обычно округляют результат вниз.
secondsToMinutes(90)
Результат:
1
Math.floor, Math.ceil и
Math.roundДля более гибкого контроля над округлением можно комбинировать
Date-fns со стандартным объектом Math.
const minutes = Math.floor(90 / 60)
console.log(minutes)
const minutes = Math.ceil(90 / 60)
console.log(minutes)
const minutes = Math.round(90 / 60)
console.log(minutes)
const duration = {
days: 2,
hours: 5,
minutes: 30
}
import {
daysToHours,
hoursToMinutes
} from 'date-fns'
const totalMinutes =
hoursToMinutes(daysToHours(duration.days)) +
hoursToMinutes(duration.hours) +
duration.minutes
console.log(totalMinutes)
Результат:
3210
import { millisecondsToSeconds } from 'date-fns'
const start = performance.now()
for (let i = 0; i < 1000000; i++) {}
const end = performance.now()
const executionTime =
millisecondsToSeconds(end - start)
console.log(executionTime)
import { secondsToMinutes, minutesToHours } from 'date-fns'
const seconds = 7200
const minutes = secondsToMinutes(seconds)
const hours = minutesToHours(minutes)
console.log(hours)
Результат:
2
Unix Timestamp обычно хранится в секундах, а JavaScript использует миллисекунды.
import { secondsToMilliseconds } from 'date-fns'
const unix = 1716000000
const date = new Date(
secondsToMilliseconds(unix)
)
console.log(date)
import { millisecondsToSeconds } from 'date-fns'
const timestamp = millisecondsToSeconds(Date.now())
console.log(timestamp)
| Функция | Назначение |
|---|---|
millisecondsToSeconds |
Миллисекунды → секунды |
secondsToMilliseconds |
Секунды → миллисекунды |
minutesToSeconds |
Минуты → секунды |
secondsToMinutes |
Секунды → минуты |
hoursToMinutes |
Часы → минуты |
minutesToHours |
Минуты → часы |
daysToHours |
Дни → часы |
hoursToDays |
Часы → дни |
weeksToDays |
Недели → дни |
daysToWeeks |
Дни → недели |
monthsToQuarters |
Месяцы → кварталы |
quartersToMonths |
Кварталы → месяцы |
yearsToMonths |
Годы → месяцы |
monthsToYears |
Месяцы → годы |
Все функции возвращают новое значение и не изменяют исходные данные.
const value = 120
const result = minutesToHours(value)
console.log(value) // 120
console.log(result) // 2
Date-fns позволяет импортировать только необходимые функции.
import { daysToHours } from 'date-fns'
Это уменьшает размер итогового JavaScript-бандла.
Функции легко комбинируются между собой.
const minutes =
hoursToMinutes(daysToHours(3))
Большинство функций округляют результат вниз, что важно учитывать при расчётах интерфейсов, таймеров и статистики.