@area17/parse-numeric-date
Advanced tools
Comparing version
@@ -7,2 +7,5 @@ # Changelog | ||
## 0.0.8 | ||
Refactored to make it easier to add ambiguous combos - removes a few bytes. | ||
## 0.0.7 | ||
@@ -9,0 +12,0 @@ Add parsing date types: |
@@ -1,2 +0,2 @@ | ||
let s=(new Intl.NumberFormat).resolvedOptions().locale;const r=(new Date).setHours(0,0,0,0);new Date(r).getFullYear();const t=()=>{const r=new Date(2e3,11,13).toLocaleDateString(s);return[{name:"d",index:r.indexOf("13")},{name:"m",index:r.indexOf("12")},{name:"y",index:r.indexOf("2000")}].sort((s,r)=>s.index-r.index).map(s=>s.name).join("-")};let e=t();const n=s=>2===s.length?parseInt(s)>60?`19${s}`:`20${s}`:s,u=(s,r,t)=>{s=n(s),s=parseInt(s,10),r=parseInt(r,10),t=(t=parseInt(t,10))>((s,r)=>new Date(r,s,0).getDate())(r=r>12?null:r,s)?null:t,r=r<10?`0${r}`:r,t=t<10?`0${t}`:t;let e=new Date(`${s}-${r}-${t}T00:00:00.000+00:00`);return e instanceof Date&&!isNaN(e)?e:null},d=(s,t)=>{const d=(s=s.map(s=>(s.d=u(s.y,s.m,s.d),s.y=parseInt(n(s.y),10),s.diff=Math.abs(r-s.d),s.score=e===s.order?2:1,s.diff>315576e7&&s.score--,s.diff<631152e5&&s.score++,s)).filter(s=>null!==s.d).sort((s,r)=>r.score-s.score)).length?s[0].score:0;return(s=s.filter(s=>s.score===d).sort((s,r)=>s.diff-r.diff).map(s=>s.d)).length?s[0]:null},i=(r,n)=>{null!=n&&n.locale&&(s=n.locale,e=t());let i=r,g=[],m=[...(r=r.replace(/[۰-۹]/g,s=>"۰۱۲۳۴۵۶۷۸۹".indexOf(s)).replace(/[٠-٩]/g,s=>"٠١٢٣٤٥٦٧٨٩".indexOf(s)).trim()).matchAll(/([0-9]{4})[^0-9]{1,}([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})/g)];return m.length>0?i.match(/[۰-۹]/g)?function(s,r,t){s=parseInt(s,10),r=parseInt(r,10),t=parseInt(t,10);const e=new Intl.DateTimeFormat("en-u-ca-persian",{dateStyle:"short",timeZone:"UTC"});let n=new Date(Date.UTC(2e3,r,t));n=new Date(n.setUTCDate(n.getUTCDate()+226867));const u=n.getUTCFullYear()-2e3+s;n=new Date((u<0?"-":"+")+("00000"+Math.abs(u)).slice(-6)+"-"+("0"+(n.getUTCMonth()+1)).slice(-2)+"-"+("0"+n.getUTCDate()).slice(-2));let[d,i,g]=[...e.format(n).split("/")],m=0;for(n=new Date(n.setUTCDate(n.getUTCDate()+Math.floor(365.25*s+30.44*r+t-(365.25*g.split(" ")[0]+30.44*d+1*i))-2));m<4;){if([d,i,g]=[...e.format(n).split("/")],parseInt(i,10)===t&&parseInt(d,10)===r&&parseInt(g.split(" ")[0],10)===s)return n;n=new Date(n.setUTCDate(n.getUTCDate()+1)),m++}throw console.log("Invalid Persian date"),new Error("Invalid Persian date")}(m[0][1],m[0][2],m[0][3]):u(m[0][1],m[0][2],m[0][3]):(m=[...r.matchAll(/([0-9]{1,2})[^0-9]{1,}([0-9]{2})[^0-9]{1,}([0-9]{4})/g)],m.length>0?(g.push({y:m[0][3],m:m[0][2],d:m[0][1],order:"d-m-y"}),g.push({y:m[0][3],m:m[0][1],d:m[0][2],order:"m-d-y"}),d(g)):(m=[...r.matchAll(/([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})/g)],m.length>0?(g.push({y:m[0][3],m:m[0][2],d:m[0][1],order:"d-m-y"}),g.push({y:m[0][3],m:m[0][1],d:m[0][2],order:"m-d-y"}),g.push({y:m[0][1],m:m[0][2],d:m[0][3],order:"y-m-d"}),d(g)):(8===r.length&&(g.push({y:r.substring(4,8),m:r.substring(2,4),d:r.substring(0,2),order:"d-m-y"}),g.push({y:r.substring(4,8),m:r.substring(0,2),d:r.substring(2,4),order:"m-d-y"}),g.push({y:r.substring(0,4),m:r.substring(4,6),d:r.substring(6,8),order:"y-m-d"})),7===r.length&&(g.push({y:r.substring(0,4),m:r.substring(4,6),d:r.substring(6,7),order:"y-m-d"}),g.push({y:r.substring(0,4),m:r.substring(4,5),d:r.substring(5,7),order:"y-m-d"}),g.push({y:r.substring(3,7),m:r.substring(2,3),d:r.substring(0,2),order:"d-m-y"}),g.push({y:r.substring(3,7),m:r.substring(1,3),d:r.substring(0,1),order:"d-m-y"}),g.push({y:r.substring(3,7),m:r.substring(0,2),d:r.substring(2,3),order:"d-m-y"}),g.push({y:r.substring(3,7),m:r.substring(0,1),d:r.substring(2,3),order:"d-m-y"})),6===r.length&&(g.push({y:r.substring(4,6),m:r.substring(2,4),d:r.substring(0,2),order:"d-m-y"}),g.push({y:r.substring(4,6),m:r.substring(0,2),d:r.substring(2,4),order:"m-d-y"}),g.push({y:r.substring(0,2),m:r.substring(2,4),d:r.substring(4,6),order:"y-m-d"}),g.push({y:r.substring(2,6),m:r.substring(1,2),d:r.substring(0,1),order:"d-m-y"}),g.push({y:r.substring(2,6),m:r.substring(0,1),d:r.substring(1,2),order:"m-d-y"}),g.push({y:r.substring(0,4),m:r.substring(4,5),d:r.substring(5,6),order:"y-m-d"})),5===r.length&&(g.push({y:r.substring(0,2),m:r.substring(2,4),d:r.substring(4,5),order:"y-m-d"}),g.push({y:r.substring(0,2),m:r.substring(2,3),d:r.substring(3,5),order:"y-m-d"}),g.push({y:r.substring(3,5),m:r.substring(2,3),d:r.substring(0,2),order:"d-m-y"}),g.push({y:r.substring(3,5),m:r.substring(1,3),d:r.substring(0,1),order:"d-m-y"}),g.push({y:r.substring(3,5),m:r.substring(0,2),d:r.substring(2,3),order:"d-m-y"}),g.push({y:r.substring(3,5),m:r.substring(0,1),d:r.substring(2,3),order:"d-m-y"})),4===r.length&&(g.push({y:r.substring(2,4),m:r.substring(1,2),d:r.substring(0,1),order:"d-m-y"}),g.push({y:r.substring(2,4),m:r.substring(0,1),d:r.substring(1,2),order:"m-d-y"}),g.push({y:r.substring(0,2),m:r.substring(2,3),d:r.substring(3,4),order:"y-m-d"})),d(g))))};export{i as default}; | ||
let e=(new Intl.NumberFormat).resolvedOptions().locale;const t=(new Date).setHours(0,0,0,0);new Date(t).getFullYear();const n=()=>{const t=new Date(2e3,11,13).toLocaleDateString(e);return[{name:"d",index:t.indexOf("13")},{name:"m",index:t.indexOf("12")},{name:"y",index:t.indexOf("2000")}].sort((e,t)=>e.index-t.index).map(e=>e.name).join("-")};let a=n();const Y=e=>2===e.length?parseInt(e)>60?`19${e}`:`20${e}`:e,r=(e,t,n)=>e.substring(t.indexOf(n),t.indexOf(n)+(t.match(new RegExp(n,"g"))||[]).length),l=(e,t)=>t.map(t=>((e,t)=>{const n=[{name:"d",index:t.indexOf("D")},{name:"m",index:t.indexOf("M")},{name:"y",index:t.indexOf("Y")}].sort((e,t)=>e.index-t.index);return{y:r(e,t,"Y"),m:r(e,t,"M"),d:r(e,t,"D"),order:n.map(e=>e.name).join("-")}})(e,t)),s=(e,t,n)=>{e=Y(e),e=parseInt(e,10),t=parseInt(t,10),n=(n=parseInt(n,10))>((e,t)=>new Date(t,e,0).getDate())(t=t>12?null:t,e)?null:n,t=t<10?`0${t}`:t,n=n<10?`0${n}`:n;let a=new Date(`${e}-${t}-${n}T00:00:00.000+00:00`);return a instanceof Date&&!isNaN(a)?a:null},D=(e,n)=>{const r=(e=e.map(e=>(e.d=s(e.y,e.m,e.d),e.y=parseInt(Y(e.y),10),e.diff=Math.abs(t-e.d),e.score=a===e.order?2:1,e.diff>315576e7&&e.score--,e.diff<631152e5&&e.score++,e)).filter(e=>null!==e.d).sort((e,t)=>t.score-e.score)).length?e[0].score:0;return(e=e.filter(e=>e.score===r).sort((e,t)=>e.diff-t.diff).map(e=>e.d)).length?e[0]:null},d=(t,Y)=>{null!=Y&&Y.locale&&(e=Y.locale,a=n());let r=t,d=[],o=[...(t=t.replace(/[۰-۹]/g,e=>"۰۱۲۳۴۵۶۷۸۹".indexOf(e)).replace(/[٠-٩]/g,e=>"٠١٢٣٤٥٦٧٨٩".indexOf(e)).trim()).matchAll(/([0-9]{4})[^0-9]{1,}([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})/g)];return o.length>0?r.match(/[۰-۹]/g)?function(e,t,n){e=parseInt(e,10),t=parseInt(t,10),n=parseInt(n,10);const a=new Intl.DateTimeFormat("en-u-ca-persian",{dateStyle:"short",timeZone:"UTC"});let Y=new Date(Date.UTC(2e3,t,n));Y=new Date(Y.setUTCDate(Y.getUTCDate()+226867));const r=Y.getUTCFullYear()-2e3+e;Y=new Date((r<0?"-":"+")+("00000"+Math.abs(r)).slice(-6)+"-"+("0"+(Y.getUTCMonth()+1)).slice(-2)+"-"+("0"+Y.getUTCDate()).slice(-2));let[l,s,D]=[...a.format(Y).split("/")],d=0;for(Y=new Date(Y.setUTCDate(Y.getUTCDate()+Math.floor(365.25*e+30.44*t+n-(365.25*D.split(" ")[0]+30.44*l+1*s))-2));d<4;){if([l,s,D]=[...a.format(Y).split("/")],parseInt(s,10)===n&&parseInt(l,10)===t&&parseInt(D.split(" ")[0],10)===e)return Y;Y=new Date(Y.setUTCDate(Y.getUTCDate()+1)),d++}throw console.log("Invalid Persian date"),new Error("Invalid Persian date")}(o[0][1],o[0][2],o[0][3]):s(o[0][1],o[0][2],o[0][3]):(o=[...t.matchAll(/([0-9]{1,2})[^0-9]{1,}([0-9]{2})[^0-9]{1,}([0-9]{4})/g)],o.length>0?(d.push({y:o[0][3],m:o[0][2],d:o[0][1],order:"d-m-y"}),d.push({y:o[0][3],m:o[0][1],d:o[0][2],order:"m-d-y"}),D(d)):(o=[...t.matchAll(/([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})/g)],o.length>0?(d.push({y:o[0][3],m:o[0][2],d:o[0][1],order:"d-m-y"}),d.push({y:o[0][3],m:o[0][1],d:o[0][2],order:"m-d-y"}),d.push({y:o[0][1],m:o[0][2],d:o[0][3],order:"y-m-d"}),D(d)):(8===t.length&&(d=l(t,["YYYYMMDD","DDMMYYYY","MMDDYYYY"])),7===t.length&&(d=l(t,["YYYYMMD","YYYYMDD","DDMYYYY","MDDYYYY","DMMYYYY","MMDYYYY"])),6===t.length&&(d=l(t,["YYMMDD","DDMMYY","MMDDYY","YYYYMD","DMYYYY","MDYYYY"])),5===t.length&&(d=l(t,["YYMMD","YYMDD","DDMYY","MDDYY","DMMYY","MMDYY"])),4===t.length&&(d=l(t,["YYMD","DMYY","MDYY"])),D(d))))};export{d as default}; | ||
//# sourceMappingURL=parse-numeric-date.modern.js.map |
@@ -1,2 +0,2 @@ | ||
var r=(new Intl.NumberFormat).resolvedOptions().locale,s=(new Date).setHours(0,0,0,0);new Date(s).getFullYear();var t=function(){var s=new Date(2e3,11,13).toLocaleDateString(r);return[{name:"d",index:s.indexOf("13")},{name:"m",index:s.indexOf("12")},{name:"y",index:s.indexOf("2000")}].sort(function(r,s){return r.index-s.index}).map(function(r){return r.name}).join("-")},n=t(),e=function(r){return 2===r.length?parseInt(r)>60?"19"+r:"20"+r:r},u=function(r,s,t){r=e(r),r=parseInt(r,10),s=parseInt(s,10),t=(t=parseInt(t,10))>function(r,s){return new Date(s,r,0).getDate()}(s=s>12?null:s,r)?null:t,s=s<10?"0"+s:s,t=t<10?"0"+t:t;var n=new Date(r+"-"+s+"-"+t+"T00:00:00.000+00:00");return n instanceof Date&&!isNaN(n)?n:null},i=function(r,t){var i=(r=r.map(function(r){return r.d=u(r.y,r.m,r.d),r.y=parseInt(e(r.y),10),r.diff=Math.abs(s-r.d),r.score=n===r.order?2:1,r.diff>315576e7&&r.score--,r.diff<631152e5&&r.score++,r}).filter(function(r){return null!==r.d}).sort(function(r,s){return s.score-r.score})).length?r[0].score:0;return(r=r.filter(function(r){return r.score===i}).sort(function(r,s){return r.diff-s.diff}).map(function(r){return r.d})).length?r[0]:null},d=function(s,e){null!=e&&e.locale&&(r=e.locale,n=t());var d=s;s=s.replace(/[۰-۹]/g,function(r){return"۰۱۲۳۴۵۶۷۸۹".indexOf(r)}).replace(/[٠-٩]/g,function(r){return"٠١٢٣٤٥٦٧٨٩".indexOf(r)}).trim();var g=[],a=[].concat(s.matchAll(/([0-9]{4})[^0-9]{1,}([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})/g));return a.length>0?d.match(/[۰-۹]/g)?function(r,s,t){r=parseInt(r,10),s=parseInt(s,10),t=parseInt(t,10);var n=new Intl.DateTimeFormat("en-u-ca-persian",{dateStyle:"short",timeZone:"UTC"}),e=new Date(Date.UTC(2e3,s,t)),u=(e=new Date(e.setUTCDate(e.getUTCDate()+226867))).getUTCFullYear()-2e3+r;e=new Date((u<0?"-":"+")+("00000"+Math.abs(u)).slice(-6)+"-"+("0"+(e.getUTCMonth()+1)).slice(-2)+"-"+("0"+e.getUTCDate()).slice(-2));var i=[].concat(n.format(e).split("/")),d=i[0],g=i[1],a=i[2],o=0;for(e=new Date(e.setUTCDate(e.getUTCDate()+Math.floor(365.25*r+30.44*s+t-(365.25*a.split(" ")[0]+30.44*d+1*g))-2));o<4;){var m=[].concat(n.format(e).split("/"));if(d=m[0],g=m[1],a=m[2],parseInt(g,10)===t&&parseInt(d,10)===s&&parseInt(a.split(" ")[0],10)===r)return e;e=new Date(e.setUTCDate(e.getUTCDate()+1)),o++}throw console.log("Invalid Persian date"),new Error("Invalid Persian date")}(a[0][1],a[0][2],a[0][3]):u(a[0][1],a[0][2],a[0][3]):(a=[].concat(s.matchAll(/([0-9]{1,2})[^0-9]{1,}([0-9]{2})[^0-9]{1,}([0-9]{4})/g))).length>0?(g.push({y:a[0][3],m:a[0][2],d:a[0][1],order:"d-m-y"}),g.push({y:a[0][3],m:a[0][1],d:a[0][2],order:"m-d-y"}),i(g)):(a=[].concat(s.matchAll(/([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})/g))).length>0?(g.push({y:a[0][3],m:a[0][2],d:a[0][1],order:"d-m-y"}),g.push({y:a[0][3],m:a[0][1],d:a[0][2],order:"m-d-y"}),g.push({y:a[0][1],m:a[0][2],d:a[0][3],order:"y-m-d"}),i(g)):(8===s.length&&(g.push({y:s.substring(4,8),m:s.substring(2,4),d:s.substring(0,2),order:"d-m-y"}),g.push({y:s.substring(4,8),m:s.substring(0,2),d:s.substring(2,4),order:"m-d-y"}),g.push({y:s.substring(0,4),m:s.substring(4,6),d:s.substring(6,8),order:"y-m-d"})),7===s.length&&(g.push({y:s.substring(0,4),m:s.substring(4,6),d:s.substring(6,7),order:"y-m-d"}),g.push({y:s.substring(0,4),m:s.substring(4,5),d:s.substring(5,7),order:"y-m-d"}),g.push({y:s.substring(3,7),m:s.substring(2,3),d:s.substring(0,2),order:"d-m-y"}),g.push({y:s.substring(3,7),m:s.substring(1,3),d:s.substring(0,1),order:"d-m-y"}),g.push({y:s.substring(3,7),m:s.substring(0,2),d:s.substring(2,3),order:"d-m-y"}),g.push({y:s.substring(3,7),m:s.substring(0,1),d:s.substring(2,3),order:"d-m-y"})),6===s.length&&(g.push({y:s.substring(4,6),m:s.substring(2,4),d:s.substring(0,2),order:"d-m-y"}),g.push({y:s.substring(4,6),m:s.substring(0,2),d:s.substring(2,4),order:"m-d-y"}),g.push({y:s.substring(0,2),m:s.substring(2,4),d:s.substring(4,6),order:"y-m-d"}),g.push({y:s.substring(2,6),m:s.substring(1,2),d:s.substring(0,1),order:"d-m-y"}),g.push({y:s.substring(2,6),m:s.substring(0,1),d:s.substring(1,2),order:"m-d-y"}),g.push({y:s.substring(0,4),m:s.substring(4,5),d:s.substring(5,6),order:"y-m-d"})),5===s.length&&(g.push({y:s.substring(0,2),m:s.substring(2,4),d:s.substring(4,5),order:"y-m-d"}),g.push({y:s.substring(0,2),m:s.substring(2,3),d:s.substring(3,5),order:"y-m-d"}),g.push({y:s.substring(3,5),m:s.substring(2,3),d:s.substring(0,2),order:"d-m-y"}),g.push({y:s.substring(3,5),m:s.substring(1,3),d:s.substring(0,1),order:"d-m-y"}),g.push({y:s.substring(3,5),m:s.substring(0,2),d:s.substring(2,3),order:"d-m-y"}),g.push({y:s.substring(3,5),m:s.substring(0,1),d:s.substring(2,3),order:"d-m-y"})),4===s.length&&(g.push({y:s.substring(2,4),m:s.substring(1,2),d:s.substring(0,1),order:"d-m-y"}),g.push({y:s.substring(2,4),m:s.substring(0,1),d:s.substring(1,2),order:"m-d-y"}),g.push({y:s.substring(0,2),m:s.substring(2,3),d:s.substring(3,4),order:"y-m-d"})),i(g))};export{d as default}; | ||
var e=(new Intl.NumberFormat).resolvedOptions().locale,n=(new Date).setHours(0,0,0,0);new Date(n).getFullYear();var t=function(){var n=new Date(2e3,11,13).toLocaleDateString(e);return[{name:"d",index:n.indexOf("13")},{name:"m",index:n.indexOf("12")},{name:"y",index:n.indexOf("2000")}].sort(function(e,n){return e.index-n.index}).map(function(e){return e.name}).join("-")},r=t(),a=function(e){return 2===e.length?parseInt(e)>60?"19"+e:"20"+e:e},Y=function(e,n,t){return e.substring(n.indexOf(t),n.indexOf(t)+(n.match(new RegExp(t,"g"))||[]).length)},i=function(e,n){return n.map(function(n){return function(e,n){var t=[{name:"d",index:n.indexOf("D")},{name:"m",index:n.indexOf("M")},{name:"y",index:n.indexOf("Y")}].sort(function(e,n){return e.index-n.index});return{y:Y(e,n,"Y"),m:Y(e,n,"M"),d:Y(e,n,"D"),order:t.map(function(e){return e.name}).join("-")}}(e,n)})},o=function(e,n,t){e=a(e),e=parseInt(e,10),n=parseInt(n,10),t=(t=parseInt(t,10))>function(e,n){return new Date(n,e,0).getDate()}(n=n>12?null:n,e)?null:t,n=n<10?"0"+n:n,t=t<10?"0"+t:t;var r=new Date(e+"-"+n+"-"+t+"T00:00:00.000+00:00");return r instanceof Date&&!isNaN(r)?r:null},u=function(e,t){var Y=(e=e.map(function(e){return e.d=o(e.y,e.m,e.d),e.y=parseInt(a(e.y),10),e.diff=Math.abs(n-e.d),e.score=r===e.order?2:1,e.diff>315576e7&&e.score--,e.diff<631152e5&&e.score++,e}).filter(function(e){return null!==e.d}).sort(function(e,n){return n.score-e.score})).length?e[0].score:0;return(e=e.filter(function(e){return e.score===Y}).sort(function(e,n){return e.diff-n.diff}).map(function(e){return e.d})).length?e[0]:null},l=function(n,a){null!=a&&a.locale&&(e=a.locale,r=t());var Y=n;n=n.replace(/[۰-۹]/g,function(e){return"۰۱۲۳۴۵۶۷۸۹".indexOf(e)}).replace(/[٠-٩]/g,function(e){return"٠١٢٣٤٥٦٧٨٩".indexOf(e)}).trim();var l=[],D=[].concat(n.matchAll(/([0-9]{4})[^0-9]{1,}([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})/g));return D.length>0?Y.match(/[۰-۹]/g)?function(e,n,t){e=parseInt(e,10),n=parseInt(n,10),t=parseInt(t,10);var r=new Intl.DateTimeFormat("en-u-ca-persian",{dateStyle:"short",timeZone:"UTC"}),a=new Date(Date.UTC(2e3,n,t)),Y=(a=new Date(a.setUTCDate(a.getUTCDate()+226867))).getUTCFullYear()-2e3+e;a=new Date((Y<0?"-":"+")+("00000"+Math.abs(Y)).slice(-6)+"-"+("0"+(a.getUTCMonth()+1)).slice(-2)+"-"+("0"+a.getUTCDate()).slice(-2));var i=[].concat(r.format(a).split("/")),o=i[0],u=i[1],l=i[2],D=0;for(a=new Date(a.setUTCDate(a.getUTCDate()+Math.floor(365.25*e+30.44*n+t-(365.25*l.split(" ")[0]+30.44*o+1*u))-2));D<4;){var c=[].concat(r.format(a).split("/"));if(o=c[0],u=c[1],l=c[2],parseInt(u,10)===t&&parseInt(o,10)===n&&parseInt(l.split(" ")[0],10)===e)return a;a=new Date(a.setUTCDate(a.getUTCDate()+1)),D++}throw console.log("Invalid Persian date"),new Error("Invalid Persian date")}(D[0][1],D[0][2],D[0][3]):o(D[0][1],D[0][2],D[0][3]):(D=[].concat(n.matchAll(/([0-9]{1,2})[^0-9]{1,}([0-9]{2})[^0-9]{1,}([0-9]{4})/g))).length>0?(l.push({y:D[0][3],m:D[0][2],d:D[0][1],order:"d-m-y"}),l.push({y:D[0][3],m:D[0][1],d:D[0][2],order:"m-d-y"}),u(l)):(D=[].concat(n.matchAll(/([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})/g))).length>0?(l.push({y:D[0][3],m:D[0][2],d:D[0][1],order:"d-m-y"}),l.push({y:D[0][3],m:D[0][1],d:D[0][2],order:"m-d-y"}),l.push({y:D[0][1],m:D[0][2],d:D[0][3],order:"y-m-d"}),u(l)):(8===n.length&&(l=i(n,["YYYYMMDD","DDMMYYYY","MMDDYYYY"])),7===n.length&&(l=i(n,["YYYYMMD","YYYYMDD","DDMYYYY","MDDYYYY","DMMYYYY","MMDYYYY"])),6===n.length&&(l=i(n,["YYMMDD","DDMMYY","MMDDYY","YYYYMD","DMYYYY","MDYYYY"])),5===n.length&&(l=i(n,["YYMMD","YYMDD","DDMYY","MDDYY","DMMYY","MMDYY"])),4===n.length&&(l=i(n,["YYMD","DMYY","MDYY"])),u(l))};export{l as default}; | ||
//# sourceMappingURL=parse-numeric-date.module.js.map |
@@ -1,2 +0,2 @@ | ||
!function(r,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s():"function"==typeof define&&define.amd?define(s):(r||self).parseNumericDate=s()}(this,function(){var r=(new Intl.NumberFormat).resolvedOptions().locale,s=(new Date).setHours(0,0,0,0);new Date(s).getFullYear();var t=function(){var s=new Date(2e3,11,13).toLocaleDateString(r);return[{name:"d",index:s.indexOf("13")},{name:"m",index:s.indexOf("12")},{name:"y",index:s.indexOf("2000")}].sort(function(r,s){return r.index-s.index}).map(function(r){return r.name}).join("-")},n=t(),e=function(r){return 2===r.length?parseInt(r)>60?"19"+r:"20"+r:r},u=function(r,s,t){r=e(r),r=parseInt(r,10),s=parseInt(s,10),t=(t=parseInt(t,10))>function(r,s){return new Date(s,r,0).getDate()}(s=s>12?null:s,r)?null:t,s=s<10?"0"+s:s,t=t<10?"0"+t:t;var n=new Date(r+"-"+s+"-"+t+"T00:00:00.000+00:00");return n instanceof Date&&!isNaN(n)?n:null},i=function(r,t){var i=(r=r.map(function(r){return r.d=u(r.y,r.m,r.d),r.y=parseInt(e(r.y),10),r.diff=Math.abs(s-r.d),r.score=n===r.order?2:1,r.diff>315576e7&&r.score--,r.diff<631152e5&&r.score++,r}).filter(function(r){return null!==r.d}).sort(function(r,s){return s.score-r.score})).length?r[0].score:0;return(r=r.filter(function(r){return r.score===i}).sort(function(r,s){return r.diff-s.diff}).map(function(r){return r.d})).length?r[0]:null};return function(s,e){null!=e&&e.locale&&(r=e.locale,n=t());var d=s;s=s.replace(/[۰-۹]/g,function(r){return"۰۱۲۳۴۵۶۷۸۹".indexOf(r)}).replace(/[٠-٩]/g,function(r){return"٠١٢٣٤٥٦٧٨٩".indexOf(r)}).trim();var g=[],o=[].concat(s.matchAll(/([0-9]{4})[^0-9]{1,}([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})/g));return o.length>0?d.match(/[۰-۹]/g)?function(r,s,t){r=parseInt(r,10),s=parseInt(s,10),t=parseInt(t,10);var n=new Intl.DateTimeFormat("en-u-ca-persian",{dateStyle:"short",timeZone:"UTC"}),e=new Date(Date.UTC(2e3,s,t)),u=(e=new Date(e.setUTCDate(e.getUTCDate()+226867))).getUTCFullYear()-2e3+r;e=new Date((u<0?"-":"+")+("00000"+Math.abs(u)).slice(-6)+"-"+("0"+(e.getUTCMonth()+1)).slice(-2)+"-"+("0"+e.getUTCDate()).slice(-2));var i=[].concat(n.format(e).split("/")),d=i[0],g=i[1],o=i[2],a=0;for(e=new Date(e.setUTCDate(e.getUTCDate()+Math.floor(365.25*r+30.44*s+t-(365.25*o.split(" ")[0]+30.44*d+1*g))-2));a<4;){var m=[].concat(n.format(e).split("/"));if(d=m[0],g=m[1],o=m[2],parseInt(g,10)===t&&parseInt(d,10)===s&&parseInt(o.split(" ")[0],10)===r)return e;e=new Date(e.setUTCDate(e.getUTCDate()+1)),a++}throw console.log("Invalid Persian date"),new Error("Invalid Persian date")}(o[0][1],o[0][2],o[0][3]):u(o[0][1],o[0][2],o[0][3]):(o=[].concat(s.matchAll(/([0-9]{1,2})[^0-9]{1,}([0-9]{2})[^0-9]{1,}([0-9]{4})/g))).length>0?(g.push({y:o[0][3],m:o[0][2],d:o[0][1],order:"d-m-y"}),g.push({y:o[0][3],m:o[0][1],d:o[0][2],order:"m-d-y"}),i(g)):(o=[].concat(s.matchAll(/([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})/g))).length>0?(g.push({y:o[0][3],m:o[0][2],d:o[0][1],order:"d-m-y"}),g.push({y:o[0][3],m:o[0][1],d:o[0][2],order:"m-d-y"}),g.push({y:o[0][1],m:o[0][2],d:o[0][3],order:"y-m-d"}),i(g)):(8===s.length&&(g.push({y:s.substring(4,8),m:s.substring(2,4),d:s.substring(0,2),order:"d-m-y"}),g.push({y:s.substring(4,8),m:s.substring(0,2),d:s.substring(2,4),order:"m-d-y"}),g.push({y:s.substring(0,4),m:s.substring(4,6),d:s.substring(6,8),order:"y-m-d"})),7===s.length&&(g.push({y:s.substring(0,4),m:s.substring(4,6),d:s.substring(6,7),order:"y-m-d"}),g.push({y:s.substring(0,4),m:s.substring(4,5),d:s.substring(5,7),order:"y-m-d"}),g.push({y:s.substring(3,7),m:s.substring(2,3),d:s.substring(0,2),order:"d-m-y"}),g.push({y:s.substring(3,7),m:s.substring(1,3),d:s.substring(0,1),order:"d-m-y"}),g.push({y:s.substring(3,7),m:s.substring(0,2),d:s.substring(2,3),order:"d-m-y"}),g.push({y:s.substring(3,7),m:s.substring(0,1),d:s.substring(2,3),order:"d-m-y"})),6===s.length&&(g.push({y:s.substring(4,6),m:s.substring(2,4),d:s.substring(0,2),order:"d-m-y"}),g.push({y:s.substring(4,6),m:s.substring(0,2),d:s.substring(2,4),order:"m-d-y"}),g.push({y:s.substring(0,2),m:s.substring(2,4),d:s.substring(4,6),order:"y-m-d"}),g.push({y:s.substring(2,6),m:s.substring(1,2),d:s.substring(0,1),order:"d-m-y"}),g.push({y:s.substring(2,6),m:s.substring(0,1),d:s.substring(1,2),order:"m-d-y"}),g.push({y:s.substring(0,4),m:s.substring(4,5),d:s.substring(5,6),order:"y-m-d"})),5===s.length&&(g.push({y:s.substring(0,2),m:s.substring(2,4),d:s.substring(4,5),order:"y-m-d"}),g.push({y:s.substring(0,2),m:s.substring(2,3),d:s.substring(3,5),order:"y-m-d"}),g.push({y:s.substring(3,5),m:s.substring(2,3),d:s.substring(0,2),order:"d-m-y"}),g.push({y:s.substring(3,5),m:s.substring(1,3),d:s.substring(0,1),order:"d-m-y"}),g.push({y:s.substring(3,5),m:s.substring(0,2),d:s.substring(2,3),order:"d-m-y"}),g.push({y:s.substring(3,5),m:s.substring(0,1),d:s.substring(2,3),order:"d-m-y"})),4===s.length&&(g.push({y:s.substring(2,4),m:s.substring(1,2),d:s.substring(0,1),order:"d-m-y"}),g.push({y:s.substring(2,4),m:s.substring(0,1),d:s.substring(1,2),order:"m-d-y"}),g.push({y:s.substring(0,2),m:s.substring(2,3),d:s.substring(3,4),order:"y-m-d"})),i(g))}}); | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e||self).parseNumericDate=n()}(this,function(){var e=(new Intl.NumberFormat).resolvedOptions().locale,n=(new Date).setHours(0,0,0,0);new Date(n).getFullYear();var t=function(){var n=new Date(2e3,11,13).toLocaleDateString(e);return[{name:"d",index:n.indexOf("13")},{name:"m",index:n.indexOf("12")},{name:"y",index:n.indexOf("2000")}].sort(function(e,n){return e.index-n.index}).map(function(e){return e.name}).join("-")},r=t(),a=function(e){return 2===e.length?parseInt(e)>60?"19"+e:"20"+e:e},o=function(e,n,t){return e.substring(n.indexOf(t),n.indexOf(t)+(n.match(new RegExp(t,"g"))||[]).length)},i=function(e,n){return n.map(function(n){return function(e,n){var t=[{name:"d",index:n.indexOf("D")},{name:"m",index:n.indexOf("M")},{name:"y",index:n.indexOf("Y")}].sort(function(e,n){return e.index-n.index});return{y:o(e,n,"Y"),m:o(e,n,"M"),d:o(e,n,"D"),order:t.map(function(e){return e.name}).join("-")}}(e,n)})},Y=function(e,n,t){e=a(e),e=parseInt(e,10),n=parseInt(n,10),t=(t=parseInt(t,10))>function(e,n){return new Date(n,e,0).getDate()}(n=n>12?null:n,e)?null:t,n=n<10?"0"+n:n,t=t<10?"0"+t:t;var r=new Date(e+"-"+n+"-"+t+"T00:00:00.000+00:00");return r instanceof Date&&!isNaN(r)?r:null},u=function(e,t){var o=(e=e.map(function(e){return e.d=Y(e.y,e.m,e.d),e.y=parseInt(a(e.y),10),e.diff=Math.abs(n-e.d),e.score=r===e.order?2:1,e.diff>315576e7&&e.score--,e.diff<631152e5&&e.score++,e}).filter(function(e){return null!==e.d}).sort(function(e,n){return n.score-e.score})).length?e[0].score:0;return(e=e.filter(function(e){return e.score===o}).sort(function(e,n){return e.diff-n.diff}).map(function(e){return e.d})).length?e[0]:null};return function(n,a){null!=a&&a.locale&&(e=a.locale,r=t());var o=n;n=n.replace(/[۰-۹]/g,function(e){return"۰۱۲۳۴۵۶۷۸۹".indexOf(e)}).replace(/[٠-٩]/g,function(e){return"٠١٢٣٤٥٦٧٨٩".indexOf(e)}).trim();var l=[],d=[].concat(n.matchAll(/([0-9]{4})[^0-9]{1,}([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})/g));return d.length>0?o.match(/[۰-۹]/g)?function(e,n,t){e=parseInt(e,10),n=parseInt(n,10),t=parseInt(t,10);var r=new Intl.DateTimeFormat("en-u-ca-persian",{dateStyle:"short",timeZone:"UTC"}),a=new Date(Date.UTC(2e3,n,t)),o=(a=new Date(a.setUTCDate(a.getUTCDate()+226867))).getUTCFullYear()-2e3+e;a=new Date((o<0?"-":"+")+("00000"+Math.abs(o)).slice(-6)+"-"+("0"+(a.getUTCMonth()+1)).slice(-2)+"-"+("0"+a.getUTCDate()).slice(-2));var i=[].concat(r.format(a).split("/")),Y=i[0],u=i[1],l=i[2],d=0;for(a=new Date(a.setUTCDate(a.getUTCDate()+Math.floor(365.25*e+30.44*n+t-(365.25*l.split(" ")[0]+30.44*Y+1*u))-2));d<4;){var f=[].concat(r.format(a).split("/"));if(Y=f[0],u=f[1],l=f[2],parseInt(u,10)===t&&parseInt(Y,10)===n&&parseInt(l.split(" ")[0],10)===e)return a;a=new Date(a.setUTCDate(a.getUTCDate()+1)),d++}throw console.log("Invalid Persian date"),new Error("Invalid Persian date")}(d[0][1],d[0][2],d[0][3]):Y(d[0][1],d[0][2],d[0][3]):(d=[].concat(n.matchAll(/([0-9]{1,2})[^0-9]{1,}([0-9]{2})[^0-9]{1,}([0-9]{4})/g))).length>0?(l.push({y:d[0][3],m:d[0][2],d:d[0][1],order:"d-m-y"}),l.push({y:d[0][3],m:d[0][1],d:d[0][2],order:"m-d-y"}),u(l)):(d=[].concat(n.matchAll(/([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})[^0-9]{1,}([0-9]{1,2})/g))).length>0?(l.push({y:d[0][3],m:d[0][2],d:d[0][1],order:"d-m-y"}),l.push({y:d[0][3],m:d[0][1],d:d[0][2],order:"m-d-y"}),l.push({y:d[0][1],m:d[0][2],d:d[0][3],order:"y-m-d"}),u(l)):(8===n.length&&(l=i(n,["YYYYMMDD","DDMMYYYY","MMDDYYYY"])),7===n.length&&(l=i(n,["YYYYMMD","YYYYMDD","DDMYYYY","MDDYYYY","DMMYYYY","MMDYYYY"])),6===n.length&&(l=i(n,["YYMMDD","DDMMYY","MMDDYY","YYYYMD","DMYYYY","MDYYYY"])),5===n.length&&(l=i(n,["YYMMD","YYMDD","DDMYY","MDDYY","DMMYY","MMDYY"])),4===n.length&&(l=i(n,["YYMD","DMYY","MDYY"])),u(l))}}); | ||
//# sourceMappingURL=parse-numeric-date.umd.js.map |
{ | ||
"name": "@area17/parse-numeric-date", | ||
"version": "0.0.7", | ||
"version": "0.0.8", | ||
"description": "Parse numeric based date inputs", | ||
@@ -5,0 +5,0 @@ "type": "module", |
# parse-numeric-date | ||
Micro library to parse numeric based date inputs | ||
~5kb minified/~1kb gzip | ||
~4kb minified/~1kb gzip | ||
@@ -6,0 +6,0 @@ ## Mission Statement |
192
src/index.js
@@ -98,2 +98,25 @@ let locale = new Intl.NumberFormat().resolvedOptions().locale; | ||
const getDatePart = (dateStr, format, part) => { | ||
return dateStr.substring(format.indexOf(part), format.indexOf(part) + (format.match(new RegExp(part, 'g')) || []).length); | ||
}; | ||
const splitDateString = (dateStr, format) => { | ||
const parts = [ | ||
{ name: 'd', index: format.indexOf('D') }, | ||
{ name: 'm', index: format.indexOf('M') }, | ||
{ name: 'y', index: format.indexOf('Y') }, | ||
].sort((a, b) => a.index - b.index); | ||
return { | ||
y: getDatePart(dateStr, format, 'Y'), | ||
m: getDatePart(dateStr, format, 'M'), | ||
d: getDatePart(dateStr, format, 'D'), | ||
order: parts.map(item => item.name).join('-'), | ||
} | ||
}; | ||
const splitDates = (dateStr, formats) => { | ||
return formats.map(format => splitDateString(dateStr, format)); | ||
}; | ||
const generateDate = (y, m, d) => { | ||
@@ -274,22 +297,3 @@ // if year is 2 digits, guess 19XX or 20XX | ||
if (dateStr.length === 8) { | ||
dates.push({ | ||
y: dateStr.substring(4, 8), | ||
m: dateStr.substring(2, 4), | ||
d: dateStr.substring(0, 2), | ||
order: 'd-m-y' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(4, 8), | ||
m: dateStr.substring(0, 2), | ||
d: dateStr.substring(2, 4), | ||
order: 'm-d-y' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(0, 4), | ||
m: dateStr.substring(4, 6), | ||
d: dateStr.substring(6, 8), | ||
order: 'y-m-d' | ||
}); | ||
dates = splitDates(dateStr, ['YYYYMMDD', 'DDMMYYYY', 'MMDDYYYY']); | ||
} | ||
@@ -300,43 +304,3 @@ | ||
if (dateStr.length === 7) { | ||
dates.push({ | ||
y: dateStr.substring(0, 4), | ||
m: dateStr.substring(4, 6), | ||
d: dateStr.substring(6, 7), | ||
order: 'y-m-d' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(0, 4), | ||
m: dateStr.substring(4, 5), | ||
d: dateStr.substring(5, 7), | ||
order: 'y-m-d' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(3, 7), | ||
m: dateStr.substring(2, 3), | ||
d: dateStr.substring(0, 2), | ||
order: 'd-m-y' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(3, 7), | ||
m: dateStr.substring(1, 3), | ||
d: dateStr.substring(0, 1), | ||
order: 'd-m-y' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(3, 7), | ||
m: dateStr.substring(0, 2), | ||
d: dateStr.substring(2, 3), | ||
order: 'd-m-y' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(3, 7), | ||
m: dateStr.substring(0, 1), | ||
d: dateStr.substring(2, 3), | ||
order: 'd-m-y' | ||
}); | ||
dates = splitDates(dateStr, ['YYYYMMD', 'YYYYMDD', 'DDMYYYY', 'MDDYYYY', 'DMMYYYY', 'MMDYYYY']); | ||
} | ||
@@ -347,44 +311,3 @@ | ||
if (dateStr.length === 6) { | ||
dates.push({ | ||
y: dateStr.substring(4, 6), | ||
m: dateStr.substring(2, 4), | ||
d: dateStr.substring(0, 2), | ||
order: 'd-m-y' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(4, 6), | ||
m: dateStr.substring(0, 2), | ||
d: dateStr.substring(2, 4), | ||
order: 'm-d-y' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(0, 2), | ||
m: dateStr.substring(2, 4), | ||
d: dateStr.substring(4, 6), | ||
order: 'y-m-d' | ||
}); | ||
/**/ | ||
dates.push({ | ||
y: dateStr.substring(2, 6), | ||
m: dateStr.substring(1, 2), | ||
d: dateStr.substring(0, 1), | ||
order: 'd-m-y' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(2, 6), | ||
m: dateStr.substring(0, 1), | ||
d: dateStr.substring(1, 2), | ||
order: 'm-d-y' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(0, 4), | ||
m: dateStr.substring(4, 5), | ||
d: dateStr.substring(5, 6), | ||
order: 'y-m-d' | ||
}); | ||
dates = splitDates(dateStr, ['YYMMDD', 'DDMMYY', 'MMDDYY', 'YYYYMD', 'DMYYYY', 'MDYYYY']); | ||
} | ||
@@ -395,43 +318,3 @@ | ||
if (dateStr.length === 5) { | ||
dates.push({ | ||
y: dateStr.substring(0, 2), | ||
m: dateStr.substring(2, 4), | ||
d: dateStr.substring(4, 5), | ||
order: 'y-m-d' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(0, 2), | ||
m: dateStr.substring(2, 3), | ||
d: dateStr.substring(3, 5), | ||
order: 'y-m-d' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(3, 5), | ||
m: dateStr.substring(2, 3), | ||
d: dateStr.substring(0, 2), | ||
order: 'd-m-y' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(3, 5), | ||
m: dateStr.substring(1, 3), | ||
d: dateStr.substring(0, 1), | ||
order: 'd-m-y' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(3, 5), | ||
m: dateStr.substring(0, 2), | ||
d: dateStr.substring(2, 3), | ||
order: 'd-m-y' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(3, 5), | ||
m: dateStr.substring(0, 1), | ||
d: dateStr.substring(2, 3), | ||
order: 'd-m-y' | ||
}); | ||
dates = splitDates(dateStr, ['YYMMD', 'YYMDD', 'DDMYY', 'MDDYY', 'DMMYY', 'MMDYY']); | ||
} | ||
@@ -441,22 +324,3 @@ | ||
if (dateStr.length === 4) { | ||
dates.push({ | ||
y: dateStr.substring(2, 4), | ||
m: dateStr.substring(1, 2), | ||
d: dateStr.substring(0, 1), | ||
order: 'd-m-y' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(2, 4), | ||
m: dateStr.substring(0, 1), | ||
d: dateStr.substring(1, 2), | ||
order: 'm-d-y' | ||
}); | ||
dates.push({ | ||
y: dateStr.substring(0, 2), | ||
m: dateStr.substring(2, 3), | ||
d: dateStr.substring(3, 4), | ||
order: 'y-m-d' | ||
}); | ||
dates = splitDates(dateStr, ['YYMD', 'DMYY', 'MDYY']); | ||
} | ||
@@ -463,0 +327,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
125890
-16.93%461
-23.55%