/* ========================================================= Upon Star — assets/cards/lunar-engine.js 公历↔农历 / 干支 / 生肖 / 二十四节气 / 建除十二神·黄历宜忌 农历算法基于 jjonline/calendar.js(solar2lunar v2.0.5, ISC)。本地计算,零外部依赖。 ========================================================= */ !function(b,f){"function"==typeof define&&define.amd?define([],f):"object"==typeof module&&module.exports?module.exports=f():b.LUNAR=f()}("undefined"!=typeof self?self:this,(function(){"use strict";const b=[19416,19168,42352,21717,53856,55632,91476,22176,39632,21970,19168,42422,42192,53840,119381,46400,54944,44450,38320,84343,18800,42160,46261,27216,27968,109396,11104,38256,21234,18800,25958,54432,59984,28309,23248,11104,100067,37600,116951,51536,54432,120998,46416,22176,107956,9680,37584,53938,43344,46423,27808,46416,86869,19872,42416,83315,21168,43432,59728,27296,44710,43856,19296,43748,42352,21088,62051,55632,23383,22176,38608,19925,19152,42192,54484,53840,54616,46400,46752,103846,38320,18864,43380,42160,45690,27216,27968,44870,43872,38256,19189,18800,25776,29859,59984,27480,21952,43872,38613,37600,51552,55636,54432,55888,30034,22176,43959,9680,37584,51893,43344,46240,47780,44368,21977,19360,42416,86390,21168,43312,31060,27296,44368,23378,19296,42726,42208,53856,60005,54576,23200,30371,38608,19195,19152,42192,118966,53840,54560,56645,46496,22224,21938,18864,42359,42160,43600,111189,27936,44448,84835,37744,18936,18800,25776,92326,59984,27424,108228,43744,41696,53987,51552,54615,54432,55888,23893,22176,42704,21972,21200,43448,43344,46240,46758,44368,21920,43940,42416,21168,45683,26928,29495,27296,44368,84821,19296,42352,21732,53600,59752,54560,55968,92838,22224,19168,43476,41680,53584,62034,54560],f=["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"],c=["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"],e=["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"],d=["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"],t=["9778397bd097c36b0b6fc9274c91aa","97b6b97bd19801ec9210c965cc920e","97bcf97c3598082c95f8c965cc920f","97bd0b06bdb0722c965ce1cfcc920f","b027097bd097c36b0b6fc9274c91aa","97b6b97bd19801ec9210c965cc920e","97bcf97c359801ec95f8c965cc920f","97bd0b06bdb0722c965ce1cfcc920f","b027097bd097c36b0b6fc9274c91aa","97b6b97bd19801ec9210c965cc920e","97bcf97c359801ec95f8c965cc920f","97bd0b06bdb0722c965ce1cfcc920f","b027097bd097c36b0b6fc9274c91aa","9778397bd19801ec9210c965cc920e","97b6b97bd19801ec95f8c965cc920f","97bd09801d98082c95f8e1cfcc920f","97bd097bd097c36b0b6fc9210c8dc2","9778397bd197c36c9210c9274c91aa","97b6b97bd19801ec95f8c965cc920e","97bd09801d98082c95f8e1cfcc920f","97bd097bd097c36b0b6fc9210c8dc2","9778397bd097c36c9210c9274c91aa","97b6b97bd19801ec95f8c965cc920e","97bcf97c3598082c95f8e1cfcc920f","97bd097bd097c36b0b6fc9210c8dc2","9778397bd097c36c9210c9274c91aa","97b6b97bd19801ec9210c965cc920e","97bcf97c3598082c95f8c965cc920f","97bd097bd097c35b0b6fc920fb0722","9778397bd097c36b0b6fc9274c91aa","97b6b97bd19801ec9210c965cc920e","97bcf97c3598082c95f8c965cc920f","97bd097bd097c35b0b6fc920fb0722","9778397bd097c36b0b6fc9274c91aa","97b6b97bd19801ec9210c965cc920e","97bcf97c359801ec95f8c965cc920f","97bd097bd097c35b0b6fc920fb0722","9778397bd097c36b0b6fc9274c91aa","97b6b97bd19801ec9210c965cc920e","97bcf97c359801ec95f8c965cc920f","97bd097bd097c35b0b6fc920fb0722","9778397bd097c36b0b6fc9274c91aa","97b6b97bd19801ec9210c965cc920e","97bcf97c359801ec95f8c965cc920f","97bd097bd07f595b0b6fc920fb0722","9778397bd097c36b0b6fc9210c8dc2","9778397bd19801ec9210c9274c920e","97b6b97bd19801ec95f8c965cc920f","97bd07f5307f595b0b0bc920fb0722","7f0e397bd097c36b0b6fc9210c8dc2","9778397bd097c36c9210c9274c920e","97b6b97bd19801ec95f8c965cc920f","97bd07f5307f595b0b0bc920fb0722","7f0e397bd097c36b0b6fc9210c8dc2","9778397bd097c36c9210c9274c91aa","97b6b97bd19801ec9210c965cc920e","97bd07f1487f595b0b0bc920fb0722","7f0e397bd097c36b0b6fc9210c8dc2","9778397bd097c36b0b6fc9274c91aa","97b6b97bd19801ec9210c965cc920e","97bcf7f1487f595b0b0bb0b6fb0722","7f0e397bd097c35b0b6fc920fb0722","9778397bd097c36b0b6fc9274c91aa","97b6b97bd19801ec9210c965cc920e","97bcf7f1487f595b0b0bb0b6fb0722","7f0e397bd097c35b0b6fc920fb0722","9778397bd097c36b0b6fc9274c91aa","97b6b97bd19801ec9210c965cc920e","97bcf7f1487f531b0b0bb0b6fb0722","7f0e397bd097c35b0b6fc920fb0722","9778397bd097c36b0b6fc9274c91aa","97b6b97bd19801ec9210c965cc920e","97bcf7f1487f531b0b0bb0b6fb0722","7f0e397bd07f595b0b6fc920fb0722","9778397bd097c36b0b6fc9274c91aa","97b6b97bd19801ec9210c9274c920e","97bcf7f0e47f531b0b0bb0b6fb0722","7f0e397bd07f595b0b0bc920fb0722","9778397bd097c36b0b6fc9210c91aa","97b6b97bd197c36c9210c9274c920e","97bcf7f0e47f531b0b0bb0b6fb0722","7f0e397bd07f595b0b0bc920fb0722","9778397bd097c36b0b6fc9210c8dc2","9778397bd097c36c9210c9274c920e","97b6b7f0e47f531b0723b0b6fb0722","7f0e37f5307f595b0b0bc920fb0722","7f0e397bd097c36b0b6fc9210c8dc2","9778397bd097c36b0b70c9274c91aa","97b6b7f0e47f531b0723b0b6fb0721","7f0e37f1487f595b0b0bb0b6fb0722","7f0e397bd097c35b0b6fc9210c8dc2","9778397bd097c36b0b6fc9274c91aa","97b6b7f0e47f531b0723b0b6fb0721","7f0e27f1487f595b0b0bb0b6fb0722","7f0e397bd097c35b0b6fc920fb0722","9778397bd097c36b0b6fc9274c91aa","97b6b7f0e47f531b0723b0b6fb0721","7f0e27f1487f531b0b0bb0b6fb0722","7f0e397bd097c35b0b6fc920fb0722","9778397bd097c36b0b6fc9274c91aa","97b6b7f0e47f531b0723b0b6fb0721","7f0e27f1487f531b0b0bb0b6fb0722","7f0e397bd097c35b0b6fc920fb0722","9778397bd097c36b0b6fc9274c91aa","97b6b7f0e47f531b0723b0b6fb0721","7f0e27f1487f531b0b0bb0b6fb0722","7f0e397bd07f595b0b0bc920fb0722","9778397bd097c36b0b6fc9274c91aa","97b6b7f0e47f531b0723b0787b0721","7f0e27f0e47f531b0b0bb0b6fb0722","7f0e397bd07f595b0b0bc920fb0722","9778397bd097c36b0b6fc9210c91aa","97b6b7f0e47f149b0723b0787b0721","7f0e27f0e47f531b0723b0b6fb0722","7f0e397bd07f595b0b0bc920fb0722","9778397bd097c36b0b6fc9210c8dc2","977837f0e37f149b0723b0787b0721","7f07e7f0e47f531b0723b0b6fb0722","7f0e37f5307f595b0b0bc920fb0722","7f0e397bd097c35b0b6fc9210c8dc2","977837f0e37f14998082b0787b0721","7f07e7f0e47f531b0723b0b6fb0721","7f0e37f1487f595b0b0bb0b6fb0722","7f0e397bd097c35b0b6fc9210c8dc2","977837f0e37f14998082b0787b06bd","7f07e7f0e47f531b0723b0b6fb0721","7f0e27f1487f531b0b0bb0b6fb0722","7f0e397bd097c35b0b6fc920fb0722","977837f0e37f14998082b0787b06bd","7f07e7f0e47f531b0723b0b6fb0721","7f0e27f1487f531b0b0bb0b6fb0722","7f0e397bd097c35b0b6fc920fb0722","977837f0e37f14998082b0787b06bd","7f07e7f0e47f531b0723b0b6fb0721","7f0e27f1487f531b0b0bb0b6fb0722","7f0e397bd07f595b0b0bc920fb0722","977837f0e37f14998082b0787b06bd","7f07e7f0e47f531b0723b0b6fb0721","7f0e27f1487f531b0b0bb0b6fb0722","7f0e397bd07f595b0b0bc920fb0722","977837f0e37f14998082b0787b06bd","7f07e7f0e47f149b0723b0787b0721","7f0e27f0e47f531b0b0bb0b6fb0722","7f0e397bd07f595b0b0bc920fb0722","977837f0e37f14998082b0723b06bd","7f07e7f0e37f149b0723b0787b0721","7f0e27f0e47f531b0723b0b6fb0722","7f0e397bd07f595b0b0bc920fb0722","977837f0e37f14898082b0723b02d5","7ec967f0e37f14998082b0787b0721","7f07e7f0e47f531b0723b0b6fb0722","7f0e37f1487f595b0b0bb0b6fb0722","7f0e37f0e37f14898082b0723b02d5","7ec967f0e37f14998082b0787b0721","7f07e7f0e47f531b0723b0b6fb0722","7f0e37f1487f531b0b0bb0b6fb0722","7f0e37f0e37f14898082b0723b02d5","7ec967f0e37f14998082b0787b06bd","7f07e7f0e47f531b0723b0b6fb0721","7f0e37f1487f531b0b0bb0b6fb0722","7f0e37f0e37f14898082b072297c35","7ec967f0e37f14998082b0787b06bd","7f07e7f0e47f531b0723b0b6fb0721","7f0e27f1487f531b0b0bb0b6fb0722","7f0e37f0e37f14898082b072297c35","7ec967f0e37f14998082b0787b06bd","7f07e7f0e47f531b0723b0b6fb0721","7f0e27f1487f531b0b0bb0b6fb0722","7f0e37f0e366aa89801eb072297c35","7ec967f0e37f14998082b0787b06bd","7f07e7f0e47f149b0723b0787b0721","7f0e27f1487f531b0b0bb0b6fb0722","7f0e37f0e366aa89801eb072297c35","7ec967f0e37f14998082b0723b06bd","7f07e7f0e47f149b0723b0787b0721","7f0e27f0e47f531b0723b0b6fb0722","7f0e37f0e366aa89801eb072297c35","7ec967f0e37f14998082b0723b06bd","7f07e7f0e37f14998083b0787b0721","7f0e27f0e47f531b0723b0b6fb0722","7f0e37f0e366aa89801eb072297c35","7ec967f0e37f14898082b0723b02d5","7f07e7f0e37f14998082b0787b0721","7f07e7f0e47f531b0723b0b6fb0722","7f0e36665b66aa89801e9808297c35","665f67f0e37f14898082b0723b02d5","7ec967f0e37f14998082b0787b0721","7f07e7f0e47f531b0723b0b6fb0722","7f0e36665b66a449801e9808297c35","665f67f0e37f14898082b0723b02d5","7ec967f0e37f14998082b0787b06bd","7f07e7f0e47f531b0723b0b6fb0721","7f0e36665b66a449801e9808297c35","665f67f0e37f14898082b072297c35","7ec967f0e37f14998082b0787b06bd","7f07e7f0e47f531b0723b0b6fb0721","7f0e26665b66a449801e9808297c35","665f67f0e37f1489801eb072297c35","7ec967f0e37f14998082b0787b06bd","7f07e7f0e47f531b0723b0b6fb0721","7f0e27f1487f531b0b0bb0b6fb0722"],r=["日","一","二","三","四","五","六","七","八","九","十"],a=["初","十","廿","卅"],s=["正","二","三","四","五","六","七","八","九","十","冬","腊"];function n(f){var c,e=348;for(c=32768;c>8;c>>=1)e+=b[f-1900]&c?1:0;return e+o(f)}function u(f){return 15&b[f-1900]}function o(f){return u(f)?65536&b[f-1900]?30:29:0}function i(f,c){return c>12||c<1?-1:b[f-1900]&65536>>c?30:29}function l(b){return f[b%10]+c[b%12]}function g(b,f){if(b<1900||b>2100)return-1;if(f<1||f>24)return-1;var c=t[b-1900],e=[parseInt("0x"+c.substr(0,5)).toString(),parseInt("0x"+c.substr(5,5)).toString(),parseInt("0x"+c.substr(10,5)).toString(),parseInt("0x"+c.substr(15,5)).toString(),parseInt("0x"+c.substr(20,5)).toString(),parseInt("0x"+c.substr(25,5)).toString()],d=[e[0].substr(0,1),e[0].substr(1,2),e[0].substr(3,1),e[0].substr(4,2),e[1].substr(0,1),e[1].substr(1,2),e[1].substr(3,1),e[1].substr(4,2),e[2].substr(0,1),e[2].substr(1,2),e[2].substr(3,1),e[2].substr(4,2),e[3].substr(0,1),e[3].substr(1,2),e[3].substr(3,1),e[3].substr(4,2),e[4].substr(0,1),e[4].substr(1,2),e[4].substr(3,1),e[4].substr(4,2),e[5].substr(0,1),e[5].substr(1,2),e[5].substr(3,1),e[5].substr(4,2)];return parseInt(d[f-1])}function v(b){if(b>12||b<1)return-1;var f=s[b-1];return f+="月"}function D(b){var f;switch(b){case 10:f="初十";break;case 20:f="二十";break;case 30:f="三十";break;default:f=a[Math.floor(b/10)],f+=r[b%10]}return f}function p(b){return e[(b-4)%12]}function h(b,e,t){if(b<1900||b>2100)return-1;if(1900==b&&1==e&&t<31)return-1;if(b)a=new Date(b,parseInt(e)-1,t);else var a=new Date;var s,h=0,I=(b=a.getFullYear(),e=a.getMonth()+1,t=a.getDate(),(Date.UTC(a.getFullYear(),a.getMonth(),a.getDate())-Date.UTC(1900,0,31))/864e5);for(s=1900;s<2101&&I>0;s++)I-=h=n(s);I<0&&(I+=h,s--);var T=new Date,x=!1;T.getFullYear()==b&&T.getMonth()+1==e&&T.getDate()==t&&(x=!0);var y=a.getDay(),C=r[y];0==y&&(y=7);var M=s,m=u(s),U=!1;for(s=1;s<13&&I>0;s++)m>0&&s==m+1&&0==U?(--s,U=!0,h=o(M)):h=i(M,s),1==U&&s==m+1&&(U=!1),I-=h;0==I&&m>0&&s==m+1&&(U?U=!1:(U=!0,--s)),I<0&&(I+=h,--s);var Y,S,k,w=s,F=I+1,z=e-1,W=(0==(S=((Y=M)-3)%10)&&(S=10),0==(k=(Y-3)%12)&&(k=12),f[S-1]+c[k-1]),j=g(M,2*e-1),A=g(M,2*e),E=l(12*(b-1900)+e+11);t>=j&&(E=l(12*(b-1900)+e+12));var L=!1,q=null;j==t&&(L=!0,q=d[2*e-2]),A==t&&(L=!0,q=d[2*e-1]);var B,G=l(Date.UTC(b,z,1,0,0,0,0)/864e5+25567+10+t-1),H="魔羯水瓶双鱼白羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯".substr(2*(B=e)-(t<[20,19,21,21,21,22,23,23,23,23,22,22][B-1]?2:0),2)+"座";return{lYear:M,lMonth:w,lDay:F,Animal:p(M),IMonthCn:(U?"闰":"")+v(w),IDayCn:D(F),cYear:b,cMonth:e,cDay:t,gzYear:W,gzMonth:E,gzDay:G,isToday:x,isLeap:U,nWeek:y,ncWeek:"星期"+C,isTerm:L,Term:q,astro:H}}return{solar2lunar:h,lunar2solar:function(b,f,c,e){var d=u(b);if(o(b),e&&d!=f)return-1;if(2100==b&&12==f&&c>1||1900==b&&1==f&&c<31)return-1;var t=i(b,f);if(b<1900||b>2100||c>t)return-1;for(var r=0,a=1900;a0&&(r+=o(b),l=!0),r+=i(b,a);e&&(r+=t);var g=Date.UTC(1900,1,30,0,0,0),v=new Date(864e5*(r+c-31)+g);return h(v.getUTCFullYear(),v.getUTCMonth()+1,v.getUTCDate())}}})); /* ===== 建除十二神 · 黄历宜忌(依农历月建推导,简化版,仅供文化研究参考) ===== */ (function(){ 'use strict'; if(!window.LUNAR) return; var Zhi = ['子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥']; // 农历月 → 月建地支序号(正月建寅=2 … 十一月建子=0 … 十二月建丑=1,子=0) function monthBranch(lMonth){ return (lMonth + 1) % 12; } // 日干支(如「甲寅」)→ 地支序号 function branchOf(gzDay){ var z = gzDay.charAt(gzDay.length - 1); return Zhi.indexOf(z); } var JC = ['建','除','满','平','定','执','破','危','成','收','开','闭']; function jianchu(lunar){ var mb = monthBranch(lunar.lMonth); var db = branchOf(lunar.gzDay); var idx = (db - mb + 12) % 12; return JC[idx]; } // 建除十二神 宜忌表(民间常用版本,非绝对定论) var YIJI = { '建': { yi:['出行','嫁娶','修造','动土','移徙','开市'], ji:['掘井','乘船','安葬'] }, '除': { yi:['祭祀','祈福','解除','疗病','出行','扫舍'], ji:['求官','上任','远行'] }, '满': { yi:['祭祀','祈福','开市','交易','求财','纳财'], ji:['动土','安葬','修造'] }, '平': { yi:['修造','嫁娶','移徙','出行','安床'], ji:['词讼','出行','医疗'] }, '定': { yi:['祭祀','祈福','嫁娶','造屋','入宅','安床'], ji:['词讼','出行','疗病'] }, '执': { yi:['造屋','修造','嫁娶','收购','捕捉'], ji:['开市','移徙','出行'] }, '破': { yi:['破屋','坏垣','求医','治病'], ji:['嫁娶','出行','签约','动土','开市'] }, '危': { yi:['安床','祭祀','祈福','捕捉'], ji:['出行','登高','嫁娶','移徙'] }, '成': { yi:['嫁娶','开市','入学','安床','修造','纳财'], ji:['词讼','争斗','出行'] }, '收': { yi:['收购','纳财','嫁娶','入仓','捕捉'], ji:['放债','出行','安葬','开市'] }, '开': { yi:['祭祀','祈福','开市','求财','出行','入学'], ji:['安葬','动土','动工'] }, '闭': { yi:['筑堤','补垣','安葬','埋穴','纳畜'], ji:['开市','出行','求医','移徙'] } }; function yiji(lunar){ var jc = jianchu(lunar); var t = YIJI[jc] || { yi:[], ji:[] }; return { jianchu: jc, yi: t.yi, ji: t.ji }; } window.LUNAR.jianchu = jianchu; window.LUNAR.yiji = yiji; })();