npm.io
1.10.0 • Published 7 months ago

@ehmpathy/uni-time

Licence
MIT
Version
1.10.0
Deps
4
Size
82 kB
Vulns
0
Weekly
0

uni-time

test publish

A glossary of intuitive, universally unambiguous time, date, and duration domain literals.

purpose

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'))

install

npm install uni-time

use

Time, Date, DateTime

declare that a date or datetime must be in the universal format

const noon: UniTime;
const birthday: UniDate;
const occurredAt: UniDateTime;
assure that a date or datetime is in the universal format
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')
cast a date or datetime into the universal format
const birthday: UniDate = asUniDate(new Date())
const occurredAt: UniDateTime = asUniDateTime(new Date())

Duration

declare a duration intuitively
const duration: UniDuration = { minutes: 7 }
serialize to milliseconds
const durationInMs = toMilliseconds({ minutes: 7 })
sleep
await sleep({ minutes: 7 })

Keywords