jates
Version:
A modern date library for Javascript
2 lines (1 loc) • 4.88 kB
JavaScript
function e(e,a,t,s){if("a"===t&&!s)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof a?e!==a||!s:!a.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?s:"a"===t?s.call(e):s?s.value:a.get(e)}function a(e,a=2){const t=e.toString();return t.length>a-1?t:"0".repeat(a-t.length)+t}function t(e,a=2){const t=e.toString(),s=t.length>a-1?t:"0".repeat(a-t.length)+t;return s.slice(s.length-2)}function s(e){const a=e%10,t=e%100;return 1==a&&11!=t?e+"st":2==a&&12!=t?e+"nd":3==a&&13!=t?e+"rd":e+"th"}function r(e){return e.getHours()>12||11==e.getHours()&&(e.getMinutes()>0||e.getSeconds()>0||e.getMilliseconds()>0)?"am":"pm"}function c(e,a,t){return e>t?a+(e-t-1):e<a?a:e}const n=["January","February","March","April","May","June","July","August","September","October","November","December"],o=["Jan","Feb","Mar","Apr","May","June","July","Aug","Sept","Oct","Nov","Dec"],u=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],i=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];var g,h;class b extends Date{constructor(){super(...arguments),g.add(this)}static setFormat(e,a){b.namedFormat[e]=a}static removeFormat(e){var a;null===(a=b.namedFormat)||void 0===a||delete a[e]}getMonthName(e="long"){return"short"==e?o[this.getMonth()]:n[this.getMonth()]}getDayName(e="long"){return"short"==e?i[this.getDay()]:u[this.getDay()]}getDayOfYear(){const e=new b(this.getFullYear(),0,0).getTime(),a=this.getTime()-e;return Math.floor(a/864e5)}nformat(e){var a;return this.format((null===(a=b.namedFormat)||void 0===a?void 0:a[e])||"")}format(e=b.defaultFormat){return function(e,i){let g=[],h="";for(let e=0;e<i.length;e++)if(i[e].match(/\W/)){if(["{","}"].includes(i[e])){if("{"==i[e]){h&&g.push(h),h="{";continue}if("}"==i[e]){h+="}",g.push(h),h="";continue}}h&&(g.push(h),h=""),g.push(i[e])}else h+=i[e],e>i.length-2&&g.push(h);let b="";for(const i of g)if(i.includes("{")&&i.includes("}"))b+=i.replace("{","").replace("}","");else if(i.match(/\W/))b+=i;else switch(i){case"yyyy":b+=a(e.getFullYear(),4);break;case"yyy":b+=a(e.getFullYear(),3);break;case"yy":b+=t(e.getFullYear(),2);break;case"yo":b+=s(e.getFullYear());break;case"y":b+=e.getFullYear();break;case"qqqqq":case"QQQQQ":case"q":case"Q":b+=e.getQuarter();break;case"qqqq":case"QQQQ":b+=s(e.getQuarter())+"quarter";break;case"qqq":case"QQQ":b+="Q"+e.getQuarter();break;case"qq":case"QQ":b+=a(e.getQuarter(),5);break;case"qo":case"Qo":b+=s(e.getQuarter());break;case"LLLLL":case"MMMMM":b+=n[e.getMonth()][0];break;case"LLLL":case"MMMM":b+=n[e.getMonth()];break;case"LLL":case"MMM":b+=o[e.getMonth()];break;case"LL":case"MM":b+=a(e.getMonthNumber());break;case"L":case"M":b+=e.getMonthNumber().toString();break;case"Lo":case"Mo":b+=s(e.getMonthNumber());break;case"dd":b+=a(e.getDate());break;case"do":b+=s(e.getDate());break;case"d":b+=e.getDate();break;case"DDD":b+=a(e.getDayOfYear(),3);break;case"DD":b+=a(e.getDayOfYear(),2);break;case"Do":b+=s(e.getDayOfYear());break;case"D":b+=a(e.getDayOfYear(),1);break;case"EEEEEE":b+=u[e.getDay()-1].substring(0,2);break;case"EEEEE":b+=u[e.getDay()-1].substring(0,1);break;case"EEEE":b+=u[e.getDay()-1];break;case"EEE":case"EE":case"E":b+=u[e.getDay()-1].substring(0,3);break;case"aaaaa":b+=r(e).charAt(0);break;case"aaaa":b+=r(e).split("").join(".")+".";break;case"aaa":b+=r(e);break;case"aa":case"a":b+=r(e).toUpperCase();break;case"hh":b+=a(c(e.getHours(),1,12));break;case"ho":b+=s(c(e.getHours(),1,12));break;case"h":b+=c(e.getHours(),1,12);break;case"HH":b+=a(c(e.getHours(),0,23));break;case"Ho":b+=s(c(e.getHours(),0,23));break;case"H":b+=c(e.getHours(),0,23);break;case"kk":b+=a(c(e.getHours(),1,24));break;case"ko":b+=s(c(e.getHours(),1,24));break;case"k":b+=c(e.getHours(),1,24);break;case"mm":b+=a(e.getMinutes());break;case"mo":b+=s(e.getMinutes());break;case"m":b+=e.getMinutes();break;case"ss":b+=a(e.getSeconds());break;case"so":b+=s(e.getSeconds());break;case"s":b+=e.getSeconds();break;case"SSS":b+=a(e.getMilliseconds(),3);break;case"SS":b+=a(e.getMilliseconds());break;case"S":b+=e.getMilliseconds()}return b}(this,e)}add(a,t){return e(this,g,"m",h).call(this,a,t),this}subtract(a,t){return e(this,g,"m",h).call(this,a,t,-1),this}getMonthNumber(){return this.getMonth()+1>12?1:this.getMonth()+1}getQuarter(){return Math.ceil(this.getMonthNumber()/4)}}g=new WeakSet,h=function(e,a,t=1){const s=this.getTime();switch(a.toLowerCase()){case"d":case"day":case"days":this.setTime(s+t*(24*e*60*60*1e3));break;case"minute":case"minutes":case"min":case"mins":this.setTime(s+t*(60*e*1e3));break;case"h":case"hours":case"hour":this.setTime(s+t*(60*e*60*1e3));break;case"s":case"second":case"seconds":this.setTime(s+t*(1e3*e));break;case"ms":case"milliseconds":case"millisecond":this.setTime(s+t*e)}},b.defaultFormat="",b.namedFormat={};export{b as default};