itty-time
Version:
Smaller and faster than ms.
2 lines (1 loc) • 505 B
JavaScript
const e=36e5,t=24*e,n={year:315576e5,month:30*t,week:7*t,day:t,hour:e,minute:6e4,second:1e3,m:1},r=e=>{if(!isNaN(+e))return+e;const[,t,r]=e.match(/^([^ ]+) +(\w\w*?)s?$/)||[,e];return+t*(n[r]||1)},o=(e,t=new Date)=>new Date(t.getTime()+r(e)),s=(e,{parts:t=9,join:r=", "}={})=>{let o,s=[];for(let[a,i]of Object.entries(n))e>=i&&t-- >0&&(e-=(o=e/i|0)*i,t||(o+=e/i),1==o&&"m"!=a||(a+="s"),s.push(r?o+" "+a:[a,o]));return r?s.join(r):s},a=e=>r(e)/1e3;export{o as datePlus,s as duration,r as ms,a as seconds};