UNPKG

@thi.ng/date

Version:

Datetime types, relative dates, math, iterators, composable formatters, locales

56 lines (55 loc) 1.25 kB
import { DAY, HOUR, MINUTE, MONTH, PERIODS, SECOND, WEEK, YEAR } from "./api.js"; const decomposeDuration = (dur) => { const year = dur / YEAR | 0; dur -= year * YEAR; const month = dur / MONTH | 0; dur -= month * MONTH; const day = dur / DAY | 0; dur -= day * DAY; const hour = dur / HOUR | 0; dur -= hour * HOUR; const min = dur / MINUTE | 0; dur -= min * MINUTE; const sec = dur / SECOND | 0; dur -= sec * SECOND; return [year, month, day, hour, min, sec, dur]; }; const composeDuration = (parts) => { let dur = (parts.y || 0) * YEAR; dur += (parts.M || 0) * MONTH; dur += (parts.d || 0) * DAY; dur += (parts.h || 0) * HOUR; dur += (parts.m || 0) * MINUTE; dur += (parts.s || 0) * SECOND; dur += parts.t || 0; return dur; }; const durationAs = (prec, dur) => dur / PERIODS[prec]; const asSeconds = (dur) => dur / SECOND; const asMinutes = (dur) => dur / MINUTE; const asHours = (dur) => dur / HOUR; const asDays = (dur) => dur / DAY; const asWeeks = (dur) => dur / WEEK; const asMonths = (dur) => dur / MONTH; const asYears = (dur) => dur / YEAR; export { asDays, asHours, asMinutes, asMonths, asSeconds, asWeeks, asYears, composeDuration, decomposeDuration, durationAs };