A glossary of intuitive, universally unambiguous time, date, and duration domain literals.
declare a universally unambiguous serialization format for dates, times, and datetime
UniDate
=yyyy-MM-dd
UniTime
=hh:mm:ss.sss
UniDateTime
=yyyy-MM-ddThh:mm:ss.sssZ
declare a universally intuitive interface for durations
UniDuration
usecases
- clarify the format a date string should be in (
const since: UniDate = '2013-12-15
) - cast date to universal format (
const birthday: UniDate = toUniDate(new Date())
) - narrow type of strings with runtime validation (
if (!isUniDate(since)) throw new Error('wrong format')
)
npm install uni-time
const noon: UniTime;
const birthday: UniDate;
const occurredAt: UniDateTime;
const noon: UniTime = isUniTime.assure('12:00:00.000')
const birthday: UniDate = isUniDate.assure('2013-12-15')
const occurredAt: UniDateTime = isUniDateTime.assure('2013-12-15T07:21:13.555Z')
const birthday: UniDate = asUniDate(new Date())
const occurredAt: UniDateTime = asUniDateTime(new Date())
const duration: UniDuration = { minutes: 7 }
const durationInMs = toMilliseconds({ minutes: 7 })
await sleep({ minutes: 7 })