UNPKG

@thi.ng/date

Version:

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

89 lines (88 loc) 2.41 kB
import { DAY, HOUR, MINUTE, SECOND, WEEK } from "./api.js"; import { ensureDate } from "./checks.js"; const floorSecond = (epoch) => { const d = ensureDate(epoch); return Date.UTC( d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds() ); }; const floorMinute = (epoch) => { const d = ensureDate(epoch); return Date.UTC( d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), d.getUTCHours(), d.getUTCMinutes() ); }; const floorHour = (epoch) => { const d = ensureDate(epoch); return Date.UTC( d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), d.getUTCHours() ); }; const floorDay = (epoch) => { const d = ensureDate(epoch); return Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()); }; const floorWeek = (epoch) => { const d = ensureDate(epoch); const w = d.getUTCDay(); return Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()) - ((w || 7) - 1) * DAY; }; const floorMonth = (epoch) => { const d = ensureDate(epoch); return Date.UTC(d.getUTCFullYear(), d.getUTCMonth()); }; const floorQuarter = (epoch) => { const d = ensureDate(epoch); return Date.UTC(d.getUTCFullYear(), (d.getUTCMonth() / 3 | 0) * 3); }; const floorYear = (epoch) => Date.UTC(ensureDate(epoch).getUTCFullYear(), 0); const ceilSecond = (epoch) => floorSecond(ensureDate(epoch).getTime() + SECOND); const ceilMinute = (epoch) => floorMinute(ensureDate(epoch).getTime() + MINUTE); const ceilHour = (epoch) => floorHour(ensureDate(epoch).getTime() + HOUR); const ceilDay = (epoch) => floorDay(ensureDate(epoch).getTime() + DAY); const ceilWeek = (epoch) => floorWeek(ensureDate(epoch).getTime() + WEEK); const ceilMonth = (epoch) => { const d = ensureDate(epoch); let y = d.getUTCFullYear(); let m = d.getUTCMonth() + 1; m > 11 && y++; return Date.UTC(y, m % 12); }; const ceilQuarter = (epoch) => { const d = ensureDate(epoch); let y = d.getUTCFullYear(); let m = ((d.getUTCMonth() + 3) / 3 | 0) * 3; m > 11 && y++; return Date.UTC(y, m % 12); }; const ceilYear = (epoch) => Date.UTC(ensureDate(epoch).getUTCFullYear() + 1, 0); export { ceilDay, ceilHour, ceilMinute, ceilMonth, ceilQuarter, ceilSecond, ceilWeek, ceilYear, floorDay, floorHour, floorMinute, floorMonth, floorQuarter, floorSecond, floorWeek, floorYear };