dayjs-hijri
Version:
A Hijri calendar (Based on Umm al-Qura calculations) plugin for day.js.
1 lines • 17 kB
JavaScript
import t from"dayjs/locale/ar.js";import i from"dayjs/locale/en.js";const n=/^(\d{4})[-/]?(\d{1,2})[-/]?(\d{0,2})(.*)?$/,s=/\[.*?\]|hY{2,4}|hM{1,4}|hD{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,h="date",r="day",e="month",a="year",o={hMonths:"محرم_صفر_ربيع الأول_ربيع الثاني_جمادى الأولى_جمادى الآخرة_رجب_شعبان_رمضان_شوال_ذو القعدة_ذو الحجة".split("_"),hMonthsShort:"محرم_صفر_ربيع ١_ربيع ٢_جمادى ١_جمادى ٢_رجب_شعبان_رمضان_شوال_ذو القعدة_ذو الحجة".split("_")},u={hMonths:["Muharram","Safar","Rabi' al-Awwal","Rabi' al-Thani","Jumada al-Ula","Jumada al-Alkhirah","Rajab","Sha’ban","Ramadhan","Shawwal","Thul-Qi’dah","Thul-Hijjah"],hMonthsShort:["Muh","Saf","Rab-I","Rab-II","Jum-I","Jum-II","Raj","Sha","Ram","Shw","Dhu-Q","Dhu-H"]},c=[23999,24029,24058,24088,24118,24147,24177,24207,24237,24265,24295,24325,24355,24384,24413,24443,24472,24502,24531,24561,24590,24620,24649,24679,24708,24738,24767,24797,24826,24857,24886,24916,24944,24974,25004,25033,25063,25092,25121,25151,25181,25210,25240,25270,25299,25328,25358,25388,25417,25446,25475,25505,25535,25564,25594,25624,25653,25683,25713,25742,25771,25801,25830,25860,25889,25919,25948,25978,26008,26037,26066,26097,26125,26155,26184,26214,26243,26273,26302,26332,26362,26392,26420,26451,26481,26510,26540,26569,26599,26628,26657,26687,26716,26746,26776,26805,26835,26865,26894,26924,26953,26983,27012,27041,27070,27100,27130,27159,27189,27219,27248,27278,27307,27337,27366,27396,27425,27455,27484,27514,27543,27573,27602,27632,27662,27691,27721,27750,27780,27810,27839,27868,27898,27927,27957,27986,28016,28045,28075,28105,28134,28164,28193,28224,28252,28282,28311,28341,28370,28400,28429,28459,28488,28518,28548,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53914,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60647,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74585,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990];function d(t,i,n){const s=function(t,i,n){const s=function(t,i){return 12*(t-1)+i-1-16104}(t,i);return h=c[s]+n-1,h+24e5;var h}(t,i,n),h=function(t){const i=function(t){return t-1721425}(t),n=new Date(864e5*(i-719163));return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate()}}(s);return[h.year,h.month,h.day]}const $=(t,i,n)=>{const s=function(t,i,n){i<=2&&(t-=1,i+=12);const s=Math.floor(t/100),h=2-s+Math.floor(s/4);return Math.floor(365.25*(t+4716))+Math.floor(30.6001*(i+1))+n+h-1524}(t,i,n),h=s-24e5,r=(t,i)=>{let n=0,s=t.length;for(;n<s;){const h=Math.floor((n+s)/2);t[h]<i?n=h+1:s=h}return n},e=c.includes(h)?r(c,h):r(c,h)-1,a=e+16104,o=a/12;return[Math.floor(o)+1,a-12*Math.floor(o)+1,c.includes(h)?1:h-c[e]+1,c[e+1]-c[e]]};var f=(c,f,l)=>{const M=f.prototype,b=M.$utils(),y=t=>"hijri"===t.$C,D=b.prettyUnit||b.p,m=b.isUndefined||b.u,_=b.padStart||b.s,p=b.monthDiff||b.m,g=b.absFloor||b.a,I=t=>function(...i){const n=t.bind(this)(...i);return n.$C=this.$C,n.isHijri()&&n.InitHijri(),n};M.startOf=I(M.startOf),M.endOf=I(M.endOf),M.add=I(M.add),M.subtract=I(M.subtract),M.set=I(M.set);const j=M.parse,S=M.init,w=M.startOf,H=M.$set,Y=M.add,C=M.format,O=M.diff,R=M.year,k=M.month,T=M.date,U=M.daysInMonth,x=M.toArray;l.$C="gregory",l.$fdow=6,l.calendar=function(t){return l.$C=t,l},M.calendar=function(t){const i=this.clone();return i.$C=t,i.isHijri()&&i.InitHijri(),i},M.isHijri=function(){return y(this)},l.locale("en",{...i,...u},!0),l.locale("ar",{...t,...o},!0);const A=function(t,i){return l(t,{locale:i.$L,utc:i.$u,calendar:i.$C})};M.init=function(t={}){S.bind(this)(t),this.isHijri()&&this.InitHijri()},M.parse=function(t){let i;if(this.$C=t.calendar||this.$C||l.$C,t.hijri&&"string"==typeof t.date&&/.*[^Z]$/i.test(t.date)&&(i=t.date.match(n))){const[n,s,h]=d(parseInt(i[1],10),parseInt(i[2],10),parseInt(i[3]||1,10));t.date=`${n}-${s}-${h}${i[4]||""}`}return j.bind(this)(t)},M.InitHijri=function(){const[t,i,n]=$(this.$y,this.$M+1,this.$D);this.$hy=t,this.$hM=i-1,this.$hD=n},M.startOf=function(t,i){if(!y(this))return w.bind(this)(t,i);const n=!!m(i)||i,s=D(t),h=(t,i,s=this.$hy)=>{const[h,e,a]=d(s,i+1,t),o=A(new Date(h,e-1,a),this);return(n?o:o.endOf(r)).$set("hour",1)},o=(this.$W+(7-l.$fdow))%7;switch(s){case a:return n?h(1,0):h(0,0,this.$hy+1);case e:return n?h(1,this.$hM):h(0,(this.$hM+1)%12,this.$hy+parseInt((this.$hM+1)/12,10));case"week":return h(n?this.$hD-o:this.$hD+(6-o),this.$hM);default:return w.bind(this)(t,i)}},M.$set=function(t,i){if(!y(this))return H.bind(this)(t,i);const n=(t,i,n=this.$hy)=>{const[s,h,r]=d(n,i+1,t);return this.$d.setFullYear(s),this.$d.setMonth(h-1),this.$d.setDate(r),this};switch(D(t)){case h:case r:n(i,this.$hM);break;case e:n(this.$hD,i);break;case a:n(this.$hD,this.$hM,i);break;default:return H.bind(this)(t,i)}return this.init(),this},M.add=function(t,i){if(!y(this))return Y.bind(this)(t,i);t=Number(t);const n=!i||1!==i.length&&"ms"!==i?D(i):i,s=(i,n)=>{const s=this.set(h,1).set(i,n+t);return s.set(h,Math.min(this.$hD,s.daysInMonth()))};if(["M",e].indexOf(n)>-1){const i=this.$hM+t,n=i<0?-Math.ceil(-i/12):parseInt(i/12,10),s=this.$hD,h=this.set(r,1).add(n,a).set(e,i-12*n);return h.set(r,Math.min(h.daysInMonth(),s))}if(["y",a].indexOf(n)>-1)return s(a,this.$hy);if(["d",r].indexOf(n)>-1){const i=new Date(this.$d);return i.setDate(i.getDate()+t),A(i,this)}return Y.bind(this)(t,i)},M.format=function(t,i){if(!y(this))return C.bind(this)(t,i);const n=t||"YYYY-MM-DDTHH:mm:ssZ",h=i||this.$locale(),{hMonths:r,hMonthsShort:e}=h;return n.replace(s,(t=>{if(t.indexOf("[")>-1)return t.replace(/\[|\]/g,"");switch(t){case"YY":return String(this.$hy).slice(-2);case"YYYY":return String(this.$hy);case"M":return String(this.$hM+1);case"MM":return _(this.$hM+1,2,"0");case"MMM":return e[this.$hM];case"MMMM":return r[this.$hM];case"D":return String(this.$hD);case"DD":return _(this.$hD,2,"0");default:return C.bind(this)(t,i)}}))},M.diff=function(t,i,n){if(!y(this))return O.bind(this)(t,i,n);const s=D(i),h=l(t);let r=p(this,h);switch(s){case a:r/=12;break;case e:break;default:return O.bind(this)(t,i,n)}return n?r:g(r)},M.$g=function(t,i,n){return m(t)?this[i]:this.set(n,t)},M.year=function(t){return y(this)?this.$g(t,"$hy",a):R.bind(this)(t)},M.month=function(t){return y(this)?this.$g(t,"$hM",e):k.bind(this)(t)},M.date=function(t){return y(this)?this.$g(t,"$hD",r):T.bind(this)(t)},M.daysInMonth=function(){if(!y(this))return U.bind(this)();return $(this.$y,this.$M+1,this.$D)[3]},x&&(M.toArray=function(){return y(this)?[this.$hy,this.$hM,this.$hD,this.$H,this.$m,this.$s,this.$ms]:x.bind(this)()}),M.clone=function(){return A(this.toDate(),this)}};export{f as default};