@zoomit/dayjs-jalali-plugin
Version:
Persian (Jalali, Khorshidi) Plugin for Day.js
2 lines (1 loc) • 13.3 kB
JavaScript
"use strict";var t="millisecond",n="second",e="minute",i="hour",r="day",s="week",a="month",u="quarter",h="year",o="date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,c=/\[([^\]]+)]|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,d={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("_")},l=function(t,n,e){var i=String(t);return!i||i.length>=n?t:""+Array(n+1-i.length).join(e)+t},$={s:l,z:function(t){var n=-t.utcOffset(),e=Math.abs(n),i=Math.floor(e/60),r=e%60;return(n<=0?"+":"-")+l(i,2,"0")+":"+l(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,a),s=e-r<0,u=n.clone().add(i+(s?-1:1),a);return+(-(i+(e-r)/(s?r-u:u-r))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(f){return{M:a,y:h,w:s,d:r,D:o,h:i,m:e,s:n,ms:t,Q:u}[f]||String(f||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},M="en",_={};_[M]=d;var m=function(t){return t instanceof p},D=function t(n,e,i){var r;if(!n)return M;if("string"==typeof n){var s=n.toLowerCase();_[s]&&(r=s),e&&(_[s]=e,r=s);var a=n.split("-");if(!r&&a.length>1)return t(a[0])}else{var u=n.name;_[u]=n,r=u}return!i&&r&&(M=r),r||!i&&M},y=function(t,n){if(m(t))return t.clone();var e="object"==typeof n?n:{};return e.date=t,e.args=arguments,new p(e)},v=$;v.l=D,v.i=m,v.w=function(t,n){return y(t,{locale:n.$L,utc:n.$u,x:n.$x,$offset:n.$offset})};var p=function(){function d(t){this.$L=D(t.locale,null,!0),this.parse(t)}var l=d.prototype;return l.parse=function(t){this.$d=function(t){var n=t.date,e=t.utc;if(null===n)return new Date(NaN);if(v.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(f);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()},l.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()},l.$utils=function(){return v},l.isValid=function(){return!("Invalid Date"===this.$d.toString())},l.isSame=function(t,n){var e=y(t);return this.startOf(n)<=e&&e<=this.endOf(n)},l.isAfter=function(t,n){return y(t)<this.startOf(n)},l.isBefore=function(t,n){return this.endOf(n)<y(t)},l.$g=function(t,n,e){return v.u(t)?this[n]:this.set(e,t)},l.unix=function(){return Math.floor(this.valueOf()/1e3)},l.valueOf=function(){return this.$d.getTime()},l.startOf=function(t,u){var f=this,c=!!v.u(u)||u,d=v.p(t),l=function(t,n){var e=v.w(f.$u?Date.UTC(f.$y,n,t):new Date(f.$y,n,t),f);return c?e:e.endOf(r)},$=function(t,n){return v.w(f.toDate()[t].apply(f.toDate("s"),(c?[0,0,0,0]:[23,59,59,999]).slice(n)),f)},M=this.$W,_=this.$M,m=this.$D,D="set"+(this.$u?"UTC":"");switch(d){case h:return c?l(1,0):l(31,11);case a:return c?l(1,_):l(0,_+1);case s:var y=this.$locale().weekStart||0,p=(M<y?M+7:M)-y;return l(c?m-p:m+(6-p),_);case r:case o:return $(D+"Hours",0);case i:return $(D+"Minutes",1);case e:return $(D+"Seconds",2);case n:return $(D+"Milliseconds",3);default:return this.clone()}},l.endOf=function(t){return this.startOf(t,!1)},l.$set=function(s,u){var f,c=v.p(s),d="set"+(this.$u?"UTC":""),l=(f={},f[r]=d+"Date",f[o]=d+"Date",f[a]=d+"Month",f[h]=d+"FullYear",f[i]=d+"Hours",f[e]=d+"Minutes",f[n]=d+"Seconds",f[t]=d+"Milliseconds",f)[c],$=c===r?this.$D+(u-this.$W):u;if(c===a||c===h){var M=this.clone().set(o,1);M.$d[l]($),M.init(),this.$d=M.set(o,Math.min(this.$D,M.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},l.set=function(t,n){return this.clone().$set(t,n)},l.get=function(t){return this[v.p(t)]()},l.add=function(t,u){var o,f=this;t=Number(t);var c=v.p(u),d=function(n){var e=y(f);return v.w(e.date(e.date()+Math.round(n*t)),f)};if(c===a)return this.set(a,this.$M+t);if(c===h)return this.set(h,this.$y+t);if(c===r)return d(1);if(c===s)return d(7);var l=(o={},o[e]=6e4,o[i]=36e5,o[n]=1e3,o)[c]||1,$=this.$d.getTime()+t*l;return v.w($,this)},l.subtract=function(t,n){return this.add(-1*t,n)},l.format=function(t){var n=this,e=this.$locale();if(!this.isValid())return e.invalidDate||"Invalid Date";var i=t||"YYYY-MM-DDTHH:mm:ssZ",r=v.z(this),s=this.$H,a=this.$m,u=this.$M,h=e.weekdays,o=e.months,f=function(t,e,r,s){return t&&(t[e]||t(n,i))||r[e].slice(0,s)},d=function(t){return v.s(s%12||12,t,"0")},l=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:u+1,MM:v.s(u+1,2,"0"),MMM:f(e.monthsShort,u,o,3),MMMM:f(o,u),D:this.$D,DD:v.s(this.$D,2,"0"),d:String(this.$W),dd:f(e.weekdaysMin,this.$W,h,2),ddd:f(e.weekdaysShort,this.$W,h,3),dddd:h[this.$W],H:String(s),HH:v.s(s,2,"0"),h:d(1),hh:d(2),a:l(s,a,!0),A:l(s,a,!1),m:String(a),mm:v.s(a,2,"0"),s:String(this.$s),ss:v.s(this.$s,2,"0"),SSS:v.s(this.$ms,3,"0"),Z:r};return i.replace(c,(function(t,n){return n||$[t]||r.replace(":","")}))},l.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},l.diff=function(t,s,o){var f,c=v.p(s),d=y(t),l=6e4*(d.utcOffset()-this.utcOffset()),$=this-d,M=v.m(this,d);return M=(f={},f[h]=M/12,f[a]=M,f[u]=M/3,f.week=($-l)/6048e5,f[r]=($-l)/864e5,f[i]=$/36e5,f[e]=$/6e4,f[n]=$/1e3,f)[c]||$,o?M:v.a(M)},l.daysInMonth=function(){return this.endOf(a).$D},l.$locale=function(){return _[this.$L]},l.locale=function(t,n){if(!t)return this.$L;var e=this.clone(),i=D(t,n,!0);return i&&(e.$L=i),e},l.clone=function(){return v.w(this.$d,this)},l.toDate=function(){return new Date(this.valueOf())},l.toJSON=function(){return this.isValid()?this.toISOString():null},l.toISOString=function(){return this.$d.toISOString()},l.toString=function(){return this.$d.toUTCString()},d}(),g=p.prototype;y.prototype=g,[["$ms",t],["$s",n],["$m",e],["$H",i],["$W",r],["$M",a],["$y",h],["$D",o]].forEach((function(t){g[t[1]]=function(n){return this.$g(n,t[0],t[1])}})),y.extend=function(t,n){return t.$i||(t(n,p,y),t.$i=!0),y},y.locale=D,y.isDayjs=m,y.unix=function(t){return y(1e3*t)},y.en=_[M],y.Ls=_,y.p={};var j={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 S(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 Y(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),u=Math.floor(365.25*a),h=Math.floor((s-u)/30.6001),o=s-u-Math.floor(30.6001*h)+e,f=h<14?h-1:h-13,c=f>2?a-4716:a-4715;return[Math.floor(c),Math.floor(f),Math.floor(o)]}function b(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,u=n-1,h=e-1,o=365*a+s(a+3,4)-s(a+99,100)+s(a+399,400),f=0;f<u;++f)o+=i[f];u>1&&(t%4==0&&t%100!=0||t%400==0)&&o++;var c=(o+=h)-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]}(...Y(t))}y.locale(j,null,!0);var w=function(t,n,e){return b(S(t,n,e))},O=function(t,n,e){return Y(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),u=0;u<n-1;++u)a+=r[u];var h=(a+=e-1)+79,o=1600+400*s(h,146097),f=!0;for((h%=146097)>=36525&&(o+=100*s(--h,36524),(h%=36524)>=365?h++:f=!1),o+=4*s(h,1461),(h%=1461)>=366&&(f=!1,o+=s(--h,365),h%=365),u=0;h>=i[u]+(1==u&&f);u++)h-=i[u]+(1==u&&f);return S(o,u+1,h+1)}(t,n,e))};const H=/^(\d{4})[-/]?(\d{1,2})[-/]?(\d{0,2})(.*)?$/,L=/\[.*?\]|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,I="day",C="month",k="year",T={jmonths:"فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند".split("_")};module.exports=(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,u=r.isUndefined||r.u,h=r.padStart||r.s,o=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,D=i.diff,y=i.year,v=i.month,p=i.date,g=i.daysInMonth,S=i.toArray,Y=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",{...j,...T},!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(H))){const[e,i,r]=O(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]=w(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=!!u(n)||n,r=a(t),h=(t,n,e=this.$jy)=>{const[r,s,a]=O(e,n+1,t),u=b(new Date(r,s-1,a),this);return(i?u:u.endOf(I)).$set("hour",1)},o=(this.$W+(7-e.$fdow))%7;switch(r){case k:return i?h(1,0):h(0,0,this.$jy+1);case C:return i?h(1,this.$jM):h(0,(this.$jM+1)%12,this.$jy+parseInt((this.$jM+1)/12,10));case"week":return h(i?this.$jD-o:this.$jD+(6-o),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]=O(e,n+1,t);return this.$d.setFullYear(i),this.$d.setMonth(r-1),this.$d.setDate(s),this};switch(a(t)){case"date":case I:e(n,this.$jM);break;case C:e(this.$jD,n);break;case k: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("date",1).set(n,e+t);return i.set("date",Math.min(this.$jD,i.daysInMonth()))};if(["M",C].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(I,1).add(e,k).set(C,n-12*e);return r.set(I,Math.min(r.daysInMonth(),i))}if(["y",k].indexOf(e)>-1)return i(k,this.$jy);if(["d",I].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(L,(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 h(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 h(this.$jD,2,"0");default:return m.bind(this)(t,n)}}))},i.diff=function(t,n,i){if(!s(this))return D.bind(this)(t,n,i);const r=a(n),u=e(t);let h=o(this,u);switch(r){case k:h/=12;break;case C:break;default:return D.bind(this)(t,n,i)}return i?h:f(h)},i.$g=function(t,n,e){return u(t)?this[n]:this.set(e,t)},i.year=function(t){return s(this)?this.$g(t,"$jy",k):y.bind(this)(t)},i.month=function(t){return s(this)?this.$g(t,"$jM",C):v.bind(this)(t)},i.date=function(t){return s(this)?this.$g(t,"$jD",I):p.bind(this)(t)},i.daysInMonth=function(){return s(this)?this.endOf(C).$jD:g.bind(this)()},S&&(i.toArray=function(){return s(this)?[this.$jy,this.$jM,this.$jD,this.$H,this.$m,this.$s,this.$ms]:S.bind(this)()}),Y&&(i.localeData=function(){return s(this)?{...Y.bind(this)(),months:()=>T.jmonths}:Y.bind(this)()}),i.clone=function(){return b(this.toDate(),this)}};