itty-time
Version:
Smaller and faster than ms.
2 lines (1 loc) • 518 B
JavaScript
;const e=36e5,t=24*e,s={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*(s[r]||1)};exports.datePlus=(e,t=new Date)=>new Date(t.getTime()+r(e)),exports.duration=(e,{parts:t=9,join:r=", "}={})=>{let n,o=[];for(let[a,i]of Object.entries(s))e>=i&&t-- >0&&(e-=(n=e/i|0)*i,t||(n+=e/i),1==n&&"m"!=a||(a+="s"),o.push(r?n+" "+a:[a,n]));return r?o.join(r):o},exports.ms=r,exports.seconds=e=>r(e)/1e3;