UNPKG

lunar-calendar-fix

Version:

农历(阴历)万年历,是一款支持Node.js和浏览器端使用的全功能农历和公历日历类库。支持农历与公历之间相互转换,含有二十四节气,天干地支纪年纪月纪日,生肖属相,公历节假日及农历传统节假日信息等功能。自带2013-2014节假日安排数据,并可自行配置。带有黄历数据,可自行选择配置。支持1891-2100年。

11 lines (10 loc) 12.9 kB
/** * 农历(阴历)万年历 * LunarCalendar;NPM NAME:lunar-calendar * vervison : v0.1.5 * Github : https://github.com/zzyss86/LunarCalendar * HomePage : http://www.tuijs.com/ * Author : JasonZhou * Email : zzyss86@qq.com */ !function(){function i(d,t){if(d&&t&&"object"==typeof t)for(var n in t)d[n]=t[n];return d}var c=function(d,t,n,r){var e=[];if(n<1)return e;for(var a=r=r||0,o=0;o<n;o++)e.push({year:d,month:t,day:a}),a++;return e},o={100:"输入的年份超过了可查询范围,仅支持1891至2100年",101:"参数输入错误,请查阅文档"},n=null,M={current:"",setCurrent:function(d){this.current!=d&&(this.current=d,this.clear())},set:function(d,t){return(n=n||{})[d]=t,n[d]},get:function(d){return(n=n||{})[d]},clear:function(){n=null}},L=function(d,t){return"d"+(d=(d+=1)<10?"0"+d:d)+(t=t<10?"0"+t:t)},S=1890,u=2100,b={heavenlyStems:["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"],earthlyBranches:["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"],zodiac:["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"],solarTerm:["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"],monthCn:["正","二","三","四","五","六","七","八","九","十","十一","十二"],dateCn:["初一","初二","初三","初四","初五","初六","初七","初八","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十","卅一"]},F={y2013:{d0101:2,d0102:2,d0103:2,d0105:1,d0106:1,d0209:2,d0210:2,d0211:2,d0212:2,d0213:2,d0214:2,d0215:2,d0216:1,d0217:1,d0404:2,d0405:2,d0406:2,d0407:1,d0427:1,d0428:1,d0429:2,d0430:2,d0501:2,d0608:1,d0609:1,d0610:2,d0611:2,d0612:2,d0919:2,d0920:2,d0921:2,d0922:1,d0929:1,d1001:2,d1002:2,d1003:2,d1004:2,d1005:2,d1006:2,d1007:2,d1012:1},y2014:{d0101:2,d0126:1,d0131:2,d0201:2,d0202:2,d0203:2,d0204:2,d0205:2,d0206:2,d0208:1,d0405:2,d0407:2,d0501:2,d0502:2,d0503:2,d0504:1,d0602:2,d0908:2,d0928:1,d1001:2,d1002:2,d1003:2,d1004:2,d1005:2,d1006:2,d1007:2,d1011:1},y2015:{d0101:2,d0102:2,d0103:2,d0104:1,d0215:1,d0218:2,d0219:2,d0220:2,d0221:2,d0222:2,d0223:2,d0228:1,d0405:2,d0406:2,d0501:2,d0502:2,d0503:2,d0620:2,d0622:2,d0903:2,d0904:2,d0905:2,d0906:1,d0927:2,d1001:2,d1002:2,d1003:2,d1004:2,d1005:2,d1006:2,d1007:2,d1010:1},y2016:{d0101:2,d0102:2,d0103:2,d0206:1,d0207:2,d0208:2,d0209:2,d0210:2,d0211:2,d0212:2,d0213:2,d0214:1,d0402:2,d0403:2,d0404:2,d0430:2,d0501:2,d0502:2,d0609:2,d0610:2,d0611:2,d0612:1,d0915:2,d0916:2,d0917:2,d0918:1,d1001:2,d1002:2,d1003:2,d1004:2,d1005:2,d1006:2,d1007:2,d1008:1,d1009:1,d1231:2},y2017:{d0101:2,d0102:2,d0127:1,d0128:2,d0129:2,d0130:2,d0132:2,d0201:2,d0202:2,d0204:1,d0401:1,d0402:2,d0403:2,d0404:2,d0429:2,d0430:2,d0501:2,d0527:1,d0528:2,d0529:2,d0530:2,d0930:1,d1001:2,d1002:2,d1003:2,d1004:2,d1005:2,d1006:2,d1007:2,d1008:2}},Y={d0101:"元旦节",d0202:"世界湿地日",d0210:"国际气象节",d0214:"情人节",d0301:"国际海豹日",d0303:"全国爱耳日",d0305:"学雷锋纪念日",d0308:"妇女节",d0312:"植树节 孙中山逝世纪念日",d0314:"国际警察日",d0315:"消费者权益日",d0317:"中国国医节 国际航海日",d0321:"世界森林日 消除种族歧视国际日 世界儿歌日",d0322:"世界水日",d0323:"世界气象日",d0324:"世界防治结核病日",d0325:"全国中小学生安全教育日",d0330:"巴勒斯坦国土日",d0401:"愚人节 全国爱国卫生运动月(四月) 税收宣传月(四月)",d0407:"世界卫生日",d0422:"世界地球日",d0423:"世界图书和版权日",d0424:"亚非新闻工作者日",d0501:"劳动节",d0504:"青年节",d0505:"碘缺乏病防治日",d0508:"世界红十字日",d0512:"国际护士节",d0515:"国际家庭日",d0517:"世界电信日",d0518:"国际博物馆日",d0520:"全国学生营养日",d0522:"国际生物多样性日",d0523:"国际牛奶日",d0531:"世界无烟日",d0601:"国际儿童节",d0605:"世界环境日",d0606:"全国爱眼日",d0617:"防治荒漠化和干旱日",d0623:"国际奥林匹克日",d0625:"全国土地日",d0626:"国际禁毒日",d0701:"香港回归纪念日 中共诞辰 世界建筑日",d0702:"国际体育记者日",d0707:"抗日战争纪念日",d0711:"世界人口日",d0730:"非洲妇女日",d0801:"建军节",d0808:"中国男子节(爸爸节)",d0815:"抗日战争胜利纪念",d0908:"国际扫盲日 国际新闻工作者日",d0909:"毛泽东逝世纪念",d0910:"中国教师节",d0914:"世界清洁地球日",d0916:"国际臭氧层保护日",d0918:"九一八事变纪念日",d0920:"国际爱牙日",d0927:"世界旅游日",d0928:"孔子诞辰",d1001:"国庆节 世界音乐日 国际老人节",d1002:"国际和平与民主自由斗争日",d1004:"世界动物日",d1006:"老人节",d1008:"全国高血压日 世界视觉日",d1009:"世界邮政日 万国邮联日",d1010:"辛亥革命纪念日 世界精神卫生日",d1013:"世界保健日 国际教师节",d1014:"世界标准日",d1015:"国际盲人节(白手杖节)",d1016:"世界粮食日",d1017:"世界消除贫困日",d1022:"世界传统医药日",d1024:"联合国日 世界发展信息日",d1031:"世界勤俭日",d1107:"十月社会主义革命纪念日",d1108:"中国记者日",d1109:"全国消防安全宣传教育日",d1110:"世界青年节",d1111:"国际科学与和平周(本日所属的一周)",d1112:"孙中山诞辰纪念日",d1114:"世界糖尿病日",d1117:"国际大学生节 世界学生节",d1121:"世界问候日 世界电视日",d1129:"国际声援巴勒斯坦人民国际日",d1201:"世界艾滋病日",d1203:"世界残疾人日",d1205:"国际经济和社会发展志愿人员日",d1208:"国际儿童电视日",d1209:"世界足球日",d1210:"世界人权日",d1212:"西安事变纪念日",d1213:"南京大屠杀(1937年)纪念日!紧记血泪史!",d1220:"澳门回归纪念",d1221:"国际篮球日",d1224:"平安夜",d1225:"圣诞节",d1226:"毛泽东诞辰纪念"},k={d0101:"春节",d0115:"元宵节",d0202:"龙抬头节",d0323:"妈祖生辰",d0505:"端午节",d0707:"七夕情人节",d0715:"中元节",d0815:"中秋节",d0909:"重阳节",d1015:"下元节",d1208:"腊八节",d1223:"小年",d0100:"除夕"},z=[[2,1,21,22184],[0,2,9,21936],[6,1,30,9656],[0,2,17,9584],[0,2,6,21168],[5,1,26,43344],[0,2,13,59728],[0,2,2,27296],[3,1,22,44368],[0,2,10,43856],[8,1,30,19304],[0,2,19,19168],[0,2,8,42352],[5,1,29,21096],[0,2,16,53856],[0,2,4,55632],[4,1,25,27304],[0,2,13,22176],[0,2,2,39632],[2,1,22,19176],[0,2,10,19168],[6,1,30,42200],[0,2,18,42192],[0,2,6,53840],[5,1,26,54568],[0,2,14,46400],[0,2,3,54944],[2,1,23,38608],[0,2,11,38320],[7,2,1,18872],[0,2,20,18800],[0,2,8,42160],[5,1,28,45656],[0,2,16,27216],[0,2,5,27968],[4,1,24,44456],[0,2,13,11104],[0,2,2,38256],[2,1,23,18808],[0,2,10,18800],[6,1,30,25776],[0,2,17,54432],[0,2,6,59984],[5,1,26,27976],[0,2,14,23248],[0,2,4,11104],[3,1,24,37744],[0,2,11,37600],[7,1,31,51560],[0,2,19,51536],[0,2,8,54432],[6,1,27,55888],[0,2,15,46416],[0,2,5,22176],[4,1,25,43736],[0,2,13,9680],[0,2,2,37584],[2,1,22,51544],[0,2,10,43344],[7,1,29,46248],[0,2,17,27808],[0,2,6,46416],[5,1,27,21928],[0,2,14,19872],[0,2,3,42416],[3,1,24,21176],[0,2,12,21168],[8,1,31,43344],[0,2,18,59728],[0,2,8,27296],[6,1,28,44368],[0,2,15,43856],[0,2,5,19296],[4,1,25,42352],[0,2,13,42352],[0,2,2,21088],[3,1,21,59696],[0,2,9,55632],[7,1,30,23208],[0,2,17,22176],[0,2,6,38608],[5,1,27,19176],[0,2,15,19152],[0,2,3,42192],[4,1,23,53864],[0,2,11,53840],[8,1,31,54568],[0,2,18,46400],[0,2,7,46752],[6,1,28,38608],[0,2,16,38320],[0,2,5,18864],[4,1,25,42168],[0,2,13,42160],[10,2,2,45656],[0,2,20,27216],[0,2,9,27968],[6,1,29,44448],[0,2,17,43872],[0,2,6,38256],[5,1,27,18808],[0,2,15,18800],[0,2,4,25776],[3,1,23,27216],[0,2,10,59984],[8,1,31,27432],[0,2,19,23232],[0,2,7,43872],[5,1,28,37736],[0,2,16,37600],[0,2,5,51552],[4,1,24,54440],[0,2,12,54432],[0,2,1,55888],[2,1,22,23208],[0,2,9,22176],[7,1,29,43736],[0,2,18,9680],[0,2,7,37584],[5,1,26,51544],[0,2,14,43344],[0,2,3,46240],[4,1,23,46416],[0,2,10,44368],[9,1,31,21928],[0,2,19,19360],[0,2,8,42416],[6,1,28,21176],[0,2,16,21168],[0,2,5,43312],[4,1,25,29864],[0,2,12,27296],[0,2,1,44368],[2,1,22,19880],[0,2,10,19296],[6,1,29,42352],[0,2,17,42208],[0,2,6,53856],[5,1,26,59696],[0,2,13,54576],[0,2,3,23200],[3,1,23,27472],[0,2,11,38608],[11,1,31,19176],[0,2,19,19152],[0,2,8,42192],[6,1,28,53848],[0,2,15,53840],[0,2,4,54560],[5,1,24,55968],[0,2,12,46496],[0,2,1,22224],[2,1,22,19160],[0,2,10,18864],[7,1,30,42168],[0,2,17,42160],[0,2,6,43600],[5,1,26,46376],[0,2,14,27936],[0,2,2,44448],[3,1,23,21936],[0,2,11,37744],[8,2,1,18808],[0,2,19,18800],[0,2,8,25776],[6,1,28,27216],[0,2,15,59984],[0,2,4,27424],[4,1,24,43872],[0,2,12,43744],[0,2,2,37600],[3,1,21,51568],[0,2,9,51552],[7,1,29,54440],[0,2,17,54432],[0,2,5,55888],[5,1,26,23208],[0,2,14,22176],[0,2,3,42704],[4,1,23,21224],[0,2,11,21200],[8,1,31,43352],[0,2,19,43344],[0,2,7,46240],[6,1,27,46416],[0,2,15,44368],[0,2,5,21920],[4,1,24,42448],[0,2,12,42416],[0,2,2,21168],[3,1,22,43320],[0,2,9,26928],[7,1,29,29336],[0,2,17,27296],[0,2,6,44368],[5,1,26,19880],[0,2,14,19296],[0,2,3,42352],[4,1,24,21104],[0,2,10,53856],[8,1,30,59696],[0,2,18,54560],[0,2,7,55968],[6,1,27,27472],[0,2,15,22224],[0,2,5,19168],[4,1,25,42216],[0,2,12,42192],[0,2,1,53584],[2,1,21,55592],[0,2,9,54560]],r=[0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758];function B(d){for(var t=z[d-S],n=t[0],r=t[3].toString(2).split(""),e=0;e<16-r.length;e++)r.unshift(0);for(var a=n?13:12,o=0,u=[],e=0;e<a;e++)0==r[e]?(o+=29,u.push(29)):(o+=30,u.push(30));return{yearDays:o,monthDays:u}}function G(d,t,n){var r,e,a,o,u,i=z[d-S],h=i[1],f=i[2],m=(e=r=d,a=t,o=n,u=new Date(r,h-1,f).getTime(),(new Date(e,a,o).getTime()-u)/864e5);return 0==m?[d,0,1]:function(d,t){for(var n=B(d),r=0<t?t:n.yearDays-Math.abs(t),e=n.monthDays,a=0,o=0,u=0;u<e.length;u++)if(r<(a+=e[u])){a-=e[o=u];break}return[d,o,r-a+1]}(0<m?d:d-1,m)}function I(d,t){return new Date(31556925974.7*(d-1890)+6e4*r[t]+Date.UTC(1890,0,5,16,2,31)).getUTCDate()}function U(d){return b.heavenlyStems[d%10]+b.earthlyBranches[d%12]}function D(d,t){var n;return[31,(n=d)%4==0&&n%100!=0||n%400==0?29:28,31,30,31,30,31,31,30,31,30,31][t]}function Z(d,t,n,r){var e=arguments.length,a=new Date;return d=e?parseInt(d,10):a.getFullYear(),t=e?parseInt(t-1,10):a.getMonth(),n=e&&parseInt(n,10)||a.getDate(),d<(r||S+1)||u<d?{error:100,msg:o[100]}:{year:d,month:t,day:n}}function h(d,t,n){var r=Z(d,t,n,S);if(r.error)return r;var e=r.year,a=r.month,o=r.day;M.setCurrent(e);var u,i,h,f,m,s,y,l=M.get("term2")?M.get("term2"):M.set("term2",I(e,2)),c=M.get("termList")?M.get("termList"):M.set("termList",function(d){for(var t={},n=0,r=0;r<24;r++){var e=I(d,r);r%2==0&&n++,t[L(n-1,e)]=b.solarTerm[r]}return t}(e)),D=1<a||1==a&&l<=o?e+1:e,g=I(e,2*a)<=o?a+1:a,v=G(e,a,o),p=(u=v[0],z[u-S][0]),C="",C=0<p&&p==v[1]?"闰"+b.monthCn[v[1]-1]+"月":0<p&&v[1]>p?b.monthCn[v[1]-1]+"月":b.monthCn[v[1]]+"月",w="",T=B(v[0]).monthDays,w=v[1]==T.length-1&&v[2]==T[T.length-1]?k.d0100:0<p&&v[1]>=p?v[1]==p?void 0:k[L(v[1]-1,v[2])]:k[L(v[1],v[2])];return{zodiac:(y=D-1890+25,b.zodiac[y%12]),GanZhiYear:U(D-1890+25+(s=s||0)),GanZhiMonth:U(12*(e-1890)+g+12+(m=m||0)),GanZhiDay:(i=e,h=a,f=o,U(Date.UTC(i,h,f)/864e5+29219+18)),worktime:F["y"+e]&&F["y"+e][L(a,o)]?F["y"+e][L(a,o)]:0,term:c[L(a,o)],lunarYear:v[0],lunarMonth:v[1]+1,lunarDay:v[2],lunarMonthName:C,lunarDayName:b.dateCn[v[2]-1],lunarLeapMonth:p,solarFestival:Y[L(a,o)],lunarFestival:w,isBigMonth:30==T[v[1]]}}function f(d,t,n){var r=Z(d,t);if(r.error)return r;var e,a,o,u,i,h,f,m,s=r.year,y=r.month,l={firstDay:new Date(s,y,1).getDay(),monthDays:D(s,y),monthData:[]};return l.monthData=c(s,y+1,l.monthDays,1),n&&(0<l.firstDay&&(o=D(e=y-1<0?s-1:s,a=y-1<0?11:y-1),u=c(e,1+a,l.firstDay,o-l.firstDay+1),l.monthData=u.concat(l.monthData)),42-l.monthData.length!=0&&(i=11<y+1?s+1:s,h=11<y+1?0:y+1,f=42-l.monthData.length,m=c(i,h+1,f,1),l.monthData=l.monthData.concat(m))),l}var d={solarToLunar:h,lunarToSolar:function(d,t,n){var r=Z(d,t,n);if(r.error)return r;var e=r.year,a=function(d,t,n){for(var r=B(d).monthDays,e=0,a=0;a<r.length&&a<t;a++)e+=r[a];return e+n-1}(e,r.month,r.day),o=z[e-S],u=o[1],i=o[2],h=new Date(e,u-1,i).getTime()+864e5*a;return{year:(h=new Date(h)).getFullYear(),month:h.getMonth()+1,day:h.getDate()}},calendar:function(d,t,n){var r=Z(d,t);if(r.error)return r;for(var e=f(r.year,r.month+1,n),a=0;a<e.monthData.length;a++){var o=e.monthData[a],u=h(o.year,o.month,o.day);i(e.monthData[a],u)}return e},solarCalendar:f,setWorktime:function(d){i(F,d)},getSolarMonthDays:D};"function"==typeof define?define(function(){return d}):"object"==typeof exports?module.exports=d:window.LunarCalendar=d}();