@zoomit/dayjs-jalali-plugin
Version:
Persian (Jalali, Khorshidi) Plugin for Day.js
2 lines (1 loc) • 13.5 kB
JavaScript
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t="undefined"!=typeof globalThis?globalThis:t||self).TSCollection=n()}(this,(function(){"use strict";var t=1e3,n=6e4,e=36e5,i="millisecond",r="second",s="minute",a="hour",o="day",u="week",h="month",f="quarter",c="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,M=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,_={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},m=function(t,n,e){var i=String(t);return!i||i.length>=n?t:""+Array(n+1-i.length).join(e)+t},y={s:m,z:function(t){var n=-t.utcOffset(),e=Math.abs(n),i=Math.floor(e/60),r=e%60;return(n<=0?"+":"-")+m(i,2,"0")+":"+m(r,2,"0")},m:function t(n,e){if(n.date()<e.date())return-t(e,n);var i=12*(e.year()-n.year())+(e.month()-n.month()),r=n.clone().add(i,h),s=e-r<0,a=n.clone().add(i+(s?-1:1),h);return+(-(i+(e-r)/(s?r-a:a-r))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:h,y:c,w:u,d:o,D:d,h:a,m:s,s:r,ms:i,Q:f}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},D="en",p={};p[D]=_;var v=function(t){return t instanceof b},g=function t(n,e,i){var r;if(!n)return D;if("string"==typeof n){var s=n.toLowerCase();p[s]&&(r=s),e&&(p[s]=e,r=s);var a=n.split("-");if(!r&&a.length>1)return t(a[0])}else{var o=n.name;p[o]=n,r=o}return!i&&r&&(D=r),r||!i&&D},j=function(t,n){if(v(t))return t.clone();var e="object"==typeof n?n:{};return e.date=t,e.args=arguments,new b(e)},S=y;S.l=g,S.i=v,S.w=function(t,n){return j(t,{locale:n.$L,utc:n.$u,x:n.$x,$offset:n.$offset})};var b=function(){function _(t){this.$L=g(t.locale,null,!0),this.parse(t)}var m=_.prototype;return m.parse=function(t){this.$d=function(t){var n=t.date,e=t.utc;if(null===n)return new Date(NaN);if(S.u(n))return new Date;if(n instanceof Date)return new Date(n);if("string"==typeof n&&!/Z$/i.test(n)){var i=n.match($);if(i){var r=i[2]-1||0,s=(i[7]||"0").substring(0,3);return e?new Date(Date.UTC(i[1],r,i[3]||1,i[4]||0,i[5]||0,i[6]||0,s)):new Date(i[1],r,i[3]||1,i[4]||0,i[5]||0,i[6]||0,s)}}return new Date(n)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return S},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,n){var e=j(t);return this.startOf(n)<=e&&e<=this.endOf(n)},m.isAfter=function(t,n){return j(t)<this.startOf(n)},m.isBefore=function(t,n){return this.endOf(n)<j(t)},m.$g=function(t,n,e){return S.u(t)?this[n]:this.set(e,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,n){var e=this,i=!!S.u(n)||n,f=S.p(t),l=function(t,n){var r=S.w(e.$u?Date.UTC(e.$y,n,t):new Date(e.$y,n,t),e);return i?r:r.endOf(o)},$=function(t,n){return S.w(e.toDate()[t].apply(e.toDate("s"),(i?[0,0,0,0]:[23,59,59,999]).slice(n)),e)},M=this.$W,_=this.$M,m=this.$D,y="set"+(this.$u?"UTC":"");switch(f){case c:return i?l(1,0):l(31,11);case h:return i?l(1,_):l(0,_+1);case u:var D=this.$locale().weekStart||0,p=(M<D?M+7:M)-D;return l(i?m-p:m+(6-p),_);case o:case d:return $(y+"Hours",0);case a:return $(y+"Minutes",1);case s:return $(y+"Seconds",2);case r:return $(y+"Milliseconds",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,n){var e,u=S.p(t),f="set"+(this.$u?"UTC":""),l=(e={},e[o]=f+"Date",e[d]=f+"Date",e[h]=f+"Month",e[c]=f+"FullYear",e[a]=f+"Hours",e[s]=f+"Minutes",e[r]=f+"Seconds",e[i]=f+"Milliseconds",e)[u],$=u===o?this.$D+(n-this.$W):n;if(u===h||u===c){var M=this.clone().set(d,1);M.$d[l]($),M.init(),this.$d=M.set(d,Math.min(this.$D,M.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,n){return this.clone().$set(t,n)},m.get=function(t){return this[S.p(t)]()},m.add=function(i,f){var d,l=this;i=Number(i);var $=S.p(f),M=function(t){var n=j(l);return S.w(n.date(n.date()+Math.round(t*i)),l)};if($===h)return this.set(h,this.$M+i);if($===c)return this.set(c,this.$y+i);if($===o)return M(1);if($===u)return M(7);var _=(d={},d[s]=n,d[a]=e,d[r]=t,d)[$]||1,m=this.$d.getTime()+i*_;return S.w(m,this)},m.subtract=function(t,n){return this.add(-1*t,n)},m.format=function(t){var n=this,e=this.$locale();if(!this.isValid())return e.invalidDate||l;var i=t||"YYYY-MM-DDTHH:mm:ssZ",r=S.z(this),s=this.$H,a=this.$m,o=this.$M,u=e.weekdays,h=e.months,f=function(t,e,r,s){return t&&(t[e]||t(n,i))||r[e].slice(0,s)},c=function(t){return S.s(s%12||12,t,"0")},d=e.meridiem||function(t,n,e){var i=t<12?"AM":"PM";return e?i.toLowerCase():i},$={YY:String(this.$y).slice(-2),YYYY:this.$y,M:o+1,MM:S.s(o+1,2,"0"),MMM:f(e.monthsShort,o,h,3),MMMM:f(h,o),D:this.$D,DD:S.s(this.$D,2,"0"),d:String(this.$W),dd:f(e.weekdaysMin,this.$W,u,2),ddd:f(e.weekdaysShort,this.$W,u,3),dddd:u[this.$W],H:String(s),HH:S.s(s,2,"0"),h:c(1),hh:c(2),a:d(s,a,!0),A:d(s,a,!1),m:String(a),mm:S.s(a,2,"0"),s:String(this.$s),ss:S.s(this.$s,2,"0"),SSS:S.s(this.$ms,3,"0"),Z:r};return i.replace(M,(function(t,n){return n||$[t]||r.replace(":","")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(i,u,d){var l,$=S.p(u),M=j(i),_=(M.utcOffset()-this.utcOffset())*n,m=this-M,y=S.m(this,M);return y=(l={},l[c]=y/12,l[h]=y,l[f]=y/3,l.week=(m-_)/6048e5,l[o]=(m-_)/864e5,l[a]=m/e,l[s]=m/n,l[r]=m/t,l)[$]||m,d?y:S.a(y)},m.daysInMonth=function(){return this.endOf(h).$D},m.$locale=function(){return p[this.$L]},m.locale=function(t,n){if(!t)return this.$L;var e=this.clone(),i=g(t,n,!0);return i&&(e.$L=i),e},m.clone=function(){return S.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},_}(),Y=b.prototype;j.prototype=Y,[["$ms",i],["$s",r],["$m",s],["$H",a],["$W",o],["$M",h],["$y",c],["$D",d]].forEach((function(t){Y[t[1]]=function(n){return this.$g(n,t[0],t[1])}})),j.extend=function(t,n){return t.$i||(t(n,b,j),t.$i=!0),j},j.locale=g,j.isDayjs=v,j.unix=function(t){return j(1e3*t)},j.en=p[D],j.Ls=p,j.p={};var w={name:"fa",weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekStart:6,months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),ordinal:function(t){return t},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"}};function O(t,n,e){n<=2&&(t-=1,n+=12);var i=Math.floor(t/100),r=2-i+Math.floor(i/4);return Math.floor(365.25*(t+4716))+Math.floor(30.6001*(n+1))+e+r-1524.5}function H(t){t+=.5;var n=Math.floor(t),e=t-n,i=n;if(n>=2299161){var r=Math.floor((n-1867216.25)/36524.25);i=n+1+r-Math.floor(r/4)}var s=i+1524,a=Math.floor((s-122.1)/365.25),o=Math.floor(365.25*a),u=Math.floor((s-o)/30.6001),h=s-o-Math.floor(30.6001*u)+e,f=u<14?u-1:u-13,c=f>2?a-4716:a-4715;return[Math.floor(c),Math.floor(f),Math.floor(h)]}function L(t){return function(t,n,e){var i=[31,28,31,30,31,30,31,31,30,31,30,31],r=[31,31,31,31,31,31,30,30,30,30,30,29];function s(t,n){return Math.floor(t/n)}for(var a=t-1600,o=n-1,u=e-1,h=365*a+s(a+3,4)-s(a+99,100)+s(a+399,400),f=0;f<o;++f)h+=i[f];o>1&&(t%4==0&&t%100!=0||t%400==0)&&h++;var c=(h+=u)-79,d=979+33*s(c,12053)+4*s(c%=12053,1461);(c%=1461)>=366&&(d+=s(c-1,365),c=(c-1)%365);for(var l=0;l<11&&c>=r[l];++l)c-=r[l];return[d,l+1,c+1]}(...H(t))}j.locale(w,null,!0);var I=function(t,n,e){return L(O(t,n,e))},T=function(t,n,e){return H(function(t,n,e){var i=[31,28,31,30,31,30,31,31,30,31,30,31],r=[31,31,31,31,31,31,30,30,30,30,30,29];function s(t,n){return Math.floor(t/n)}for(var a=365*(t-=979)+8*s(t,33)+s(t%33+3,4),o=0;o<n-1;++o)a+=r[o];var u=(a+=e-1)+79,h=1600+400*s(u,146097),f=!0;for((u%=146097)>=36525&&(h+=100*s(--u,36524),(u%=36524)>=365?u++:f=!1),h+=4*s(u,1461),(u%=1461)>=366&&(f=!1,h+=s(--u,365),u%=365),o=0;u>=i[o]+(1==o&&f);o++)u-=i[o]+(1==o&&f);return O(h,o+1,u+1)}(t,n,e))};const C=/^(\d{4})[-/]?(\d{1,2})[-/]?(\d{0,2})(.*)?$/,k=/\[.*?\]|jY{2,4}|jM{1,4}|jD{1,2}|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,x="date",J="day",A="month",W="year",F={jmonths:"فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند".split("_")};return(t,n,e)=>{const i=n.prototype,r=i.$utils();if(i.InitJalali)return;const s=t=>"jalali"===t.$C,a=r.prettyUnit||r.p,o=r.isUndefined||r.u,u=r.padStart||r.s,h=r.monthDiff||r.m,f=r.absFloor||r.a,c=t=>function(...n){const e=t.bind(this)(...n);return e.$C=this.$C,e.isJalali()&&e.InitJalali(),e};i.startOf=c(i.startOf),i.endOf=c(i.endOf),i.add=c(i.add),i.subtract=c(i.subtract),i.set=c(i.set);const d=i.parse,l=i.init,$=i.startOf,M=i.$set,_=i.add,m=i.format,y=i.diff,D=i.year,p=i.month,v=i.date,g=i.daysInMonth,j=i.toArray,S=i.localeData;e.$C="gregory",e.$fdow=6,e.calendar=function(t){return e.$C=t,e},i.calendar=function(t){const n=this.clone();return n.$C=t,n.isJalali()&&n.InitJalali(),n},i.isJalali=function(){return s(this)},e.en.jmonths="Farvardin_Ordibehesht_Khordaad_Tir_Mordaad_Shahrivar_Mehr_Aabaan_Aazar_Dey_Bahman_Esfand".split("_"),e.locale("fa",{...w,...F},!0);const b=function(t,n){return e(t,{locale:n.$L,utc:n.$u,calendar:n.$C})};i.init=function(t={}){l.bind(this)(t),this.isJalali()&&this.InitJalali()},i.parse=function(t){let n;if(this.$C=t.calendar||this.$C||e.$C,t.jalali&&"string"==typeof t.date&&/.*[^Z]$/i.test(t.date)&&(n=t.date.match(C))){const[e,i,r]=T(parseInt(n[1],10),parseInt(n[2],10),parseInt(n[3]||1,10));t.date=`${e}-${i}-${r}${n[4]||""}`}return d.bind(this)(t)},i.InitJalali=function(){const[t,n,e]=I(this.$y,this.$M+1,this.$D);this.$jy=t,this.$jM=n-1,this.$jD=e},i.startOf=function(t,n){if(!s(this))return $.bind(this)(t,n);const i=!!o(n)||n,r=a(t),u=(t,n,e=this.$jy)=>{const[r,s,a]=T(e,n+1,t),o=b(new Date(r,s-1,a),this);return(i?o:o.endOf(J)).$set("hour",1)},h=(this.$W+(7-e.$fdow))%7;switch(r){case W:return i?u(1,0):u(0,0,this.$jy+1);case A:return i?u(1,this.$jM):u(0,(this.$jM+1)%12,this.$jy+parseInt((this.$jM+1)/12,10));case"week":return u(i?this.$jD-h:this.$jD+(6-h),this.$jM);default:return $.bind(this)(t,n)}},i.$set=function(t,n){if(!s(this))return M.bind(this)(t,n);const e=(t,n,e=this.$jy)=>{const[i,r,s]=T(e,n+1,t);return this.$d.setFullYear(i),this.$d.setMonth(r-1),this.$d.setDate(s),this};switch(a(t)){case x:case J:e(n,this.$jM);break;case A:e(this.$jD,n);break;case W:e(this.$jD,this.$jM,n);break;default:return M.bind(this)(t,n)}return this.init(),this},i.add=function(t,n){if(!s(this))return _.bind(this)(t,n);t=Number(t);const e=!n||1!==n.length&&"ms"!==n?a(n):n,i=(n,e)=>{const i=this.set(x,1).set(n,e+t);return i.set(x,Math.min(this.$jD,i.daysInMonth()))};if(["M",A].indexOf(e)>-1){const n=this.$jM+t,e=n<0?-Math.ceil(-n/12):parseInt(n/12,10),i=this.$jD,r=this.set(J,1).add(e,W).set(A,n-12*e);return r.set(J,Math.min(r.daysInMonth(),i))}if(["y",W].indexOf(e)>-1)return i(W,this.$jy);if(["d",J].indexOf(e)>-1){const n=new Date(this.$d);return n.setDate(n.getDate()+t),b(n,this)}return _.bind(this)(t,n)},i.format=function(t,n){if(!s(this))return m.bind(this)(t,n);const e=t||"YYYY-MM-DDTHH:mm:ssZ",i=n||this.$locale(),{jmonths:r}=i;return e.replace(k,(t=>{if(t.indexOf("[")>-1)return t.replace(/\[|\]/g,"");switch(t){case"YY":return String(this.$jy).slice(-2);case"YYYY":return String(this.$jy);case"M":return String(this.$jM+1);case"MM":return u(this.$jM+1,2,"0");case"MMM":return r[this.$jM].slice(0,3);case"MMMM":return r[this.$jM];case"D":return String(this.$jD);case"DD":return u(this.$jD,2,"0");default:return m.bind(this)(t,n)}}))},i.diff=function(t,n,i){if(!s(this))return y.bind(this)(t,n,i);const r=a(n),o=e(t);let u=h(this,o);switch(r){case W:u/=12;break;case A:break;default:return y.bind(this)(t,n,i)}return i?u:f(u)},i.$g=function(t,n,e){return o(t)?this[n]:this.set(e,t)},i.year=function(t){return s(this)?this.$g(t,"$jy",W):D.bind(this)(t)},i.month=function(t){return s(this)?this.$g(t,"$jM",A):p.bind(this)(t)},i.date=function(t){return s(this)?this.$g(t,"$jD",J):v.bind(this)(t)},i.daysInMonth=function(){return s(this)?this.endOf(A).$jD:g.bind(this)()},j&&(i.toArray=function(){return s(this)?[this.$jy,this.$jM,this.$jD,this.$H,this.$m,this.$s,this.$ms]:j.bind(this)()}),S&&(i.localeData=function(){return s(this)?{...S.bind(this)(),months:()=>F.jmonths}:S.bind(this)()}),i.clone=function(){return b(this.toDate(),this)}}}));