Skip to content

a glossary of universally intuitive time, date, and duration domain literals

License

Notifications You must be signed in to change notification settings

ehmpathy/uni-time

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

a glossary of universally intuitive time, date, and duration domain literals

Resources

License

Stars

Watchers

Forks

Packages

No packages published