mm-cal-js
Version:
Myanmar calendar calculation library
3 lines (2 loc) • 3.07 kB
JavaScript
var r,a=365.2587564814815,o=29.53058794607172,t=1954168.050623,n=2361222,e=function(r){var o=Math.round(r),n=Math.floor((o-.5-t)/a),e=f(n),l=o-e.tagu1+1,u=Math.floor(e.myanmarYearType/2),h=Math.floor(1/(e.myanmarYearType+1)),M=354+30*(1-h)+u,i=Math.floor((l-1)/M);l-=i*M;var T=Math.floor((l+423)/512),m=Math.floor((l-u*T+h*T*30+29.26)/29.544),y=Math.floor((m+12)/16),g=Math.floor((m+11)/16),v=l-Math.floor(29.544*m-29.26)-u*y+h*g*30,E=30-(m+=3*g-4*y+12*i)%2;return 3===m&&(E+=e.myanmarYearType/2),{myanmarYear:n,myanmarYearType:e.myanmarYearType,yearLength:M,month:m,monthType:i,monthLength:E,monthDay:v,weekDay:(o+2)%7,julianDay:r}},l=function(r){var n=function(r){var a,o,t,n,e,l,f=0;return r>1312?(a=3,o=-.5,t=8,n=[[1377,1]],e=[1344,1345]):r>=1217?(a=2,o=-1,t=4,n=[[1234,1],[1261,-1]],e=[1263,1264]):r>=1100?(a=1.3,o=-.85,t=-1,n=[[1120,1],[1126,-1],[1150,1],[1172,-1],[1207,1]],e=[1201,1202]):r>=798?(a=1.2,o=-1.1,t=-1,n=[[813,-1],[849,-1],[851,-1],[854,-1],[927,-1],[933,-1],[936,-1],[938,-1],[949,-1],[952,-1],[963,-1],[968,-1],[1039,-1]],e=[]):(a=1.1,o=-1.1,t=-1,n=[[205,1],[246,1],[471,1],[572,-1],[651,1],[653,2],[656,1],[672,1],[729,1],[767,-1]],e=[]),(l=function(r,a){for(var o=0,t=0,n=a.length-1;n>=t;)if(a[o=Math.floor((t+n)/2)][0]>r)n=o-1;else{if(!(a[o][0]<r))return o;t=o+1}return-1}(r,n))>=0&&(o+=n[l][1]),(l=function(r,a){for(var o=0,t=0,n=a.length-1;n>=t;)if(a[o=Math.floor((t+n)/2)]>r)n=o-1;else{if(!(a[o]<r))return o;t=o+1}return-1}(r,e))>=0&&(f=1),{ERA_ID:a,WATAT_OFFSET:o,NUMBER_OF_MONTHS:t,EXCEPTION_IN_WATAT_YEAR:f}}(r),e=a*(r+3739)%o;e<.9076417607184055*(12-n.NUMBER_OF_MONTHS)&&(e+=o);var l=Math.round(a*r+t-e+4.5*o+n.WATAT_OFFSET),f=0;return n.ERA_ID>=2?e>=o-.9076417607184055*n.NUMBER_OF_MONTHS&&(f=1):((f=(7*r+2)%19)<0&&(f+=19),f=Math.floor(f/12)),{fullMoon:l,watat:f^=n.EXCEPTION_IN_WATAT_YEAR}},f=function(r){var a=l(r),o=a.watat,t=0,n=void 0;do{t++,n=l(r-t)}while(0===n.watat&&t<3);var e=0,f=0;if(o){var u=(a.fullMoon-n.fullMoon)%354;o=Math.floor(u/31)+1,e=a.fullMoon,30!=u&&31!=u&&(f=1)}else e=n.fullMoon+354*t;return{myanmarYearType:o,tagu1:n.fullMoon+354*t-102,fullMoon:e,watatError:f}};!function(r){r[r.English=0]="English",r[r.Gregorian=1]="Gregorian",r[r.Julian=2]="Julian"}(r||(r={}));var u=function(a,o,t){void 0===o&&(o=n),void 0===t&&(t=r.English);var e=a.getMonth()+1,l=Math.floor((14-e)/12),f=a.getFullYear()+4800-l,u=e+12*l-3;o=o<=0?n:o;var M=a.getDate()+Math.floor((153*u+2)/5)+365*f+Math.floor(f/4);return t===r.Gregorian?M=M-Math.floor(f/100)+Math.floor(f/400)-32045:t===r.Julian?M-=32083:(M=M-Math.floor(f/100)+Math.floor(f/400)-32045)<o&&(M=a.getDate()+Math.floor((153*u+2)/5)+365*f+Math.floor(f/4)-32083)>o&&(M=o),M+h(a)},h=function(r){return(r.getHours()-12)/24+r.getMinutes()/1440+r.getSeconds()/86400},M=function(r){return e(u(r))};exports.getMyanmarDate=M,exports.isSabbath=function(r){var a=M(r),o=a.monthLength,t=a.monthDay,n=0;return 8!==t&&15!==t&&23!==t&&t!==o||(n=1),7!==t&&14!==t&&22!==t&&t!==o-1||(n=2),n},exports.julianToMyanmarDate=e,exports.westernToJulianDayNumber=u;
//# sourceMappingURL=index.cjs.map