UNPKG

kor-lunar

Version:

한국 음력 변환 유틸 / Korean lunar calendar converter

3 lines (2 loc) 5.14 kB
var korLunar=function(n){"use strict";var t=function(n){return"string"==typeof n||"number"==typeof n?~~n:n},r=[50342582,46534058,50360036,46403236,46402890,50222421,46533271,46400854,50345309,46533333,50367442,46401362,46534309,50223914,46401099,46533275,50416294,46400874,46533465,50342826,46401362,50359717,46402341,46402123,50354523,46533293,46400874,50341301,46533545,50363858,46402962,46402853,50355501,46401878,46400181,50481885,46401236,46534057,50343626,46403218,50226854,46400807,46533207,50420054,46533338,46401236,50411345,46401353,50428691,46402195,46400811,50423067,46532973,46533482,50417060,46402468,46402377,50343243,46402197,50363051,46400813,46533293,50420394,46534066,46402980,50413217,46402890,50367893,46402198,46400854,50357621,46533333,46401234,50349909,46534309,46403146,50214478,46533275,50363094,46400874,46533465,50355122,46401362,46401317,50350891,46402123,50366891,46400173,46531947,50423209,46534057,46402962,50351509,46402853,50376269,46402134,46400182,50490093,46401236,46534057,50355922,46403218,46402854,50214190,46533207,50366902,46533466,46401236,50354025,46401353,46401171,50350743,46400811,46533211,50342574,46400362,50494933,46402468,46402377,50355539,46402197,46400813,50410797,46533293,50371498,46400978,46534053,50355882,46402890,46402197,50350749,46400854,46533301,50342614,46401234,50358117,46534309,46403146,50222678,46533787,46400858,50345325,46533481,50380626,46401362,46402341,50424587,46402123,46400683,50352827,46531949,46533481,50343338,46402962,50364069,46402853,46402125,50420301,46400182,46532021,79569],e=["갑","을","병","정","무","기","경","신","임","계"],a=["자","축","인","묘","진","사","오","미","신","유","술","해"],o=1890,u=18900101,i=2050,f=20501118,c={},l=function(n){return n=t(n),r[n-o]},g=function(n,r){return r=t(r),0===(l(n)>>r-1&1)?29:30},A=function(n){return l(n)>>12&15},_=function(n,r){return(r=t(r))===A(n)},D=function(n,t){return _(n,t)?0===(l(n)>>16&1)?29:30:0},s=function(n){return l(n)>>17&511};c[1890]=0;for(var h=1891;h<=i;h++)c[h]=c[h-1]+s(h-1);var M=function(n){return n=t(n),c[n]},y=function(n,r,e){r=t(r);for(var a=0,o=1;o<r;o++)a+=g(n,o),o===A(n)&&(a+=D(n,o));var u=A(n);return e&&u===r&&(a+=g(n,r)),a},E=function(n,r,e,a){return e=t(e),M(n)+y(n,r,a)+e},v=function(n){return n=t(n),e[(n+6)%e.length]+a[(n+8)%a.length]},L=function(n,r){return n=t(n),r=t(r),e[(2*n+r+3)%e.length]+a[(r+1)%a.length]},B=function(n){return n=t(n),e[(n-1)%e.length]+a[(n+1)%a.length]},S=function(n,r,e){var a=1e4*(n=t(n))+100*(r=t(r))+(e=t(e));return a>=u&&a<=f},Y=Object.freeze({__proto__:null,BASE_YEAR:o,BASE_MONTH:1,BASE_DAY:1,BASE_VALUE:u,MAX_YEAR:i,MAX_MONTH:11,MAX_DAY:18,MAX_VALUE:f,getMonthDays:g,getLeapMonth:A,hasLeapMonth:function(n){return 0!==A(n)},isLeapMonth:_,getLeapMonthDays:D,getYearDays:s,getTotalDaysBeforeYear:M,getTotalDaysBeforeMonth:y,getTotalDays:E,getSecha:v,getWolgeon:L,getIljinByJulianDay:B,getIljin:function(n,t,r,e){var a=E(n,t,r,e);return B(a-1)},isDateInRange:S,isValidDate:function(n,r,e,a){if(n=t(n),r=t(r),e=t(e),n<o||n>i)return!1;if(n===o){if(r<1)return!1;if(1===r&&e<1)return!1}if(n===i){if(r>11)return!1;if(11===r&&e>18)return!1}return!(r<1||r>12)&&(!(e<1)&&e<=(a?D(n,r):g(n,r)))}}),p=[31,28,31,30,31,30,31,31,30,31,30,31],T=1890,d=18900121,O=2050,R=20501231,X={},j=function(n){return(n=t(n))%4==0&&n%100!=0||n%400==0},V=function(n,r){return 2===(r=t(r))&&j(n)?29:p[r-1]},w=function(n){return j(n)?366:365};X[1890]=0;for(var b=1891;b<=O;b++)X[b]=X[b-1]+w(b-1);var m=function(n){return n=t(n),X[n]},H=function(n,t){for(var r=0,e=1;e<t;e++)r+=V(n,e);return r},I=function(n,t,r){return m(n)+H(n,t)+r},N=function(n,r,e){var a=1e4*(n=t(n))+100*(r=t(r))+(e=t(e));return a>=d&&a<=R},U=Object.freeze({__proto__:null,BASE_YEAR:T,BASE_MONTH:1,BASE_DAY:21,BASE_VALUE:d,MAX_YEAR:O,MAX_MONTH:12,MAX_DAY:31,MAX_VALUE:R,isLeapYear:j,getMonthDays:V,getYearDays:w,getTotalDaysBeforeYear:m,getTotalDaysBeforeMonth:H,getTotalDays:I,isDateInRange:N,isValidDate:function(n,r,e){if(n=t(n),r=t(r),e=t(e),n<T||n>O)return!1;if(n===T){if(r<1)return!1;if(1===r&&e<21)return!1}if(n===O){if(r>12)return!1;if(12===r&&e>31)return!1}return!(r<1||r>12)&&(!(e<1)&&e<=V(n,r))}}),k=function(n,r,e){if(n=t(n),r=t(r),e=t(e),!N(n,r,e))throw new RangeError("지원되지 않는 날짜입니다. 입력한 날짜: ".concat(n,"-").concat(r,"-").concat(e));var a=Math.min(n,i),o=n>i?11:r,u=1,f=E(a,o,u,!0),c=I(n,r,e);u+=c-20-f;for(var l=c-20,_=2411389+l-1,s=(l+1)%7,h=o===A(a);u<1;)h?h=!1:(0===--o&&(o=12,a--),h=o===A(a)),u+=h?D(a,o):g(a,o);return{year:a,month:o,day:u,isLeapMonth:h,secha:v(a),wolgeon:h?"":L(a,o),iljin:B(_),julianDay:_,dayOfWeek:s}},z=function(n,r,e,a){if(n=t(n),r=t(r),e=t(e),!S(n,r,e))throw new RangeError("지원되지 않는 날짜입니다. 입력한 날짜: ".concat(n,"-").concat(r,"-").concat(e));for(var o=n,u=r,i=e+(E(n,r,e,a)-(I(n,r,e)-20)),f=V(o,u);i>f;)i-=f,++u>12&&(u=1,o++),f=V(o,u);return{year:o,month:u,day:i}},W={toLunar:k,toSolar:z,LunarData:Y,SolarData:U};return n.LunarData=Y,n.SolarData=U,n.default=W,n.toLunar=k,n.toSolar=z,Object.defineProperty(n,"__esModule",{value:!0}),n}({}); //# sourceMappingURL=kor-lunar.min.js.map