/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/console/core/src/util/date.ts
38 строк
1 KB
Frank
wip: zen lite
24 фев 2026, 12:45
24 фев 2026, 12:45
fb6d201
Код
Авторство
О чём код?
export function getWeekBounds(date: Date) { const offset = (date.getUTCDay() + 6) % 7 const start = new Date(date) start.setUTCDate(date.getUTCDate() - offset) start.setUTCHours(0, 0, 0, 0) const end = new Date(start) end.setUTCDate(start.getUTCDate() + 7) return { start, end } } export function getMonthlyBounds(now: Date, subscribed: Date) { const day = subscribed.getUTCDate() const hh = subscribed.getUTCHours() const mm = subscribed.getUTCMinutes() const ss = subscribed.getUTCSeconds() const ms = subscribed.getUTCMilliseconds() function anchor(year: number, month: number) { const max = new Date(Date.UTC(year, month + 1, 0)).getUTCDate() return new Date(Date.UTC(year, month, Math.min(day, max), hh, mm, ss, ms)) } function shift(year: number, month: number, delta: number) { const total = year * 12 + month + delta return [Math.floor(total / 12), ((total % 12) + 12) % 12] as const } let y = now.getUTCFullYear() let m = now.getUTCMonth() let start = anchor(y, m) if (start > now) { ;[y, m] = shift(y, m, -1) start = anchor(y, m) } const [ny, nm] = shift(y, m, 1) const end = anchor(ny, nm) return { start, end } }