UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 1.71 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ function r(r){const e=/^(days?|hours?|minutes?|seconds?|d|h|m|s) since (\d{1,4})-(\d{1,2})-(\d{1,2})[ |T](\d{1,2}):(\d{1,2}):(\d{1,2})(\.[0-9]+)?[\s|Z]?(([+|\-|\s?])(\d{1,2}):(\d{1,2}))?$/i.exec(r);if(null==e)return{didParse:!1};const[,t,s,a,d,n,i,u,N,o,c,f,p]=e;let $="seconds";const P=t.charAt(0).toLowerCase();"d"===P?$="days":"h"===P?$="hours":"m"===P&&($="minutes");const m=parseInt(s,10);if(Number.isNaN(m))return{didParse:!1};const b=parseInt(a,10);if(Number.isNaN(b)||b<1||b>12)return{didParse:!1};const I=parseInt(d,10);if(Number.isNaN(I)||I<1||I>31)return{didParse:!1};if(2===b){const r=m%4==0&&(m%100!=0||m%400==0);if(r&&I>29||!r&&I>28)return{didParse:!1}}else if((4===b||6===b||9===b||11===b)&&I>30)return{didParse:!1};const S=parseInt(n,10);if(Number.isNaN(S)||S<0||S>23)return{didParse:!1};const l=parseInt(i,10);if(Number.isNaN(l)||l<0||l>59)return{didParse:!1};const h=parseInt(u,10);if(Number.isNaN(h)||h<0||h>59)return{didParse:!1};let w=1,x=0,y=0;if(c&&(w="-"===c?-1:1),f){if(x=parseInt(f,10),Number.isNaN(x)||x<0)return{didParse:!1};if(0!==x){const r=w*x;if(r<-12||r>14)return{didParse:!1}}}if(p&&(y=parseInt(p,10),Number.isNaN(y)||y<0||y>59))return{didParse:!1};const T=`${m}`.padStart(4,"0"),Z=`${b}`.padStart(2,"0"),A=`${I}`.padStart(2,"0"),C=`${S}`.padStart(2,"0"),D=`${l}`.padStart(2,"0"),L=`${h}`.padStart(2,"0");let g="Z";0===x&&0===y||(g=""+(w>0?"+":"-"),g+=`${x}`.padStart(2,"0"),g+=":",g+=`${y}`.padStart(2,"0"));return{didParse:!0,unit:$,reference:new Date(`${T}-${Z}-${A}T${C}:${D}:${L}.000${g}`)}}export{r as parseTimeDimensionUnit};