UNPKG

@onesy/date

Version:

Time and date utils library

48 lines (35 loc) 1.38 kB
import clamp from '@onesy/utils/clamp'; import OnesyDate from './OnesyDate'; import add from './add'; export default function set(value, unit) { let onesyDate_ = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : OnesyDate.onesyDate; if (onesyDate_ && onesyDate_.valid) { const onesyDate = new OnesyDate(onesyDate_); switch (unit) { case 'millisecond': return new OnesyDate(onesyDate.value.setMilliseconds(value)); case 'milliseconds': return new OnesyDate(value); case 'second': return new OnesyDate(onesyDate.value.setSeconds(value)); case 'minute': return new OnesyDate(onesyDate.value.setMinutes(value)); case 'hour': return new OnesyDate(onesyDate.value.setHours(value)); case 'day': return new OnesyDate(onesyDate.value.setDate(clamp(value, 0, 31))); case 'dayWeek': return add(clamp(value, 0, 6) - onesyDate.dayWeek, 'day', onesyDate); case 'dayYear': return add(clamp(value, 0, 366) - onesyDate.dayYear, 'day', onesyDate); case 'week': return add(value - onesyDate.week, 'week', onesyDate); case 'month': return new OnesyDate(onesyDate.value.setMonth(value)); case 'year': return new OnesyDate(onesyDate.value.setFullYear(value)); default: break; } } }