@gidw/rfc3339-parser
Version:
RFC3339 parser
1 lines • 728 B
JavaScript
export function parseRFC3339(t){let e,s,n,r;if("string"!=typeof t)return new Date(t);const i=t.trim().toUpperCase(),p=i.split(i.includes("T")?"T":" "),a=p[0].split("-"),l=p[1];if(s="",n=1,r=0,l){const t=l.length;if("Z"===l.charAt(t-1))e=l.substring(0,t-1);else{let t=l.indexOf("+");t>-1?(e=l.substring(0,t),s=l.substring(t+1),n=1):(t=l.indexOf("-"),t>-1?(e=l.substring(0,t),s=l.substring(t+1),n=-1):e=l)}}if(!e)return new Date(t);e=e.split(":");const u=e[2].split("."),f=u[0],I=u[1],o=Date.UTC(parseInt(a[0],10),parseInt(a[1],10)-1,parseInt(a[2],10),parseInt(e[0],10),parseInt(e[1],10),parseInt(f,10),I?parseInt(I,10):0);if(s){const t=s.split(":");r=n*(60*parseInt(t[0],10)*60*1e3+60*parseInt(t[1],10)*1e3)}return new Date(o-r)}