import { SECONDS_A_DAY, SECONDS_A_HOUR, SECONDS_A_MINUTE, SECONDS_A_MONTH, SECONDS_A_WEEK, SECONDS_A_YEAR, } from '@/constants/date' export type PeriodUnit = 'seconds' | 'minutes' | 'hours' | 'days' | 'weeks' | 'months' | 'years' /** * Convert time period given as seconds to days, hour, minutes, seconds */ export function secondsToPeriod(seconds: number): { unit: PeriodUnit, amount: number } { if (seconds % SECONDS_A_DAY === 0) { if (seconds % SECONDS_A_WEEK === 0) { return {unit: 'weeks', amount: seconds / SECONDS_A_WEEK} } else if (seconds % SECONDS_A_MONTH === 0) { return {unit: 'months', amount: seconds / SECONDS_A_MONTH} } else if (seconds % SECONDS_A_YEAR === 0) { return {unit: 'years', amount: seconds / SECONDS_A_YEAR} } else { return {unit: 'days', amount: seconds / SECONDS_A_DAY} } } return { unit: 'hours', amount: seconds / SECONDS_A_HOUR, } } /** * Convert time period of days, hour, minutes, seconds to duration in seconds */ export function periodToSeconds(period: number, unit: PeriodUnit): number { switch (unit) { case 'minutes': return period * SECONDS_A_MINUTE case 'hours': return period * SECONDS_A_HOUR case 'days': return period * SECONDS_A_DAY case 'weeks': return period * SECONDS_A_WEEK } return 0 }