chinese-days
Version:
中国节假日、调休日、工作日、24节气查询,农历阳历互转,支持 TS、CommonJS、UMD 模块化使用,提供 ics 日历格式,可供 Google Calendar、Apple Calendar、Microsoft Outlook 等客户端订阅。
2 lines (1 loc) • 23.2 kB
JavaScript
(function(l,u){typeof exports=="object"&&typeof module<"u"?u(exports):typeof define=="function"&&define.amd?define(["exports"],u):(l=typeof globalThis<"u"?globalThis:l||self,u(l.chineseDays={}))})(this,function(l){"use strict";var ut=Object.defineProperty;var yt=(l,u,h)=>u in l?ut(l,u,{enumerable:!0,configurable:!0,writable:!0,value:h}):l[u]=h;var D=(l,u,h)=>yt(l,typeof u!="symbol"?u+"":u,h);const _=class _{constructor(t){D(this,"_date");t instanceof _?this._date=new Date(t.toDate()):t instanceof Date?this._date=new Date(t):typeof t=="string"||typeof t=="number"?(this._date=new Date(t),typeof t=="string"&&isNaN(this._date.getTime())&&(this._date=new Date(t.replace(/-/g,"/")))):this._date=new Date}toDate(){return this._date}isValid(){return!isNaN(this._date.getTime())}diff(t,e="day"){const a=new _(t).toDate(),n=this._date.getTime()-a.getTime();switch(e){case"year":return this._date.getFullYear()-a.getFullYear();case"month":return(this._date.getFullYear()-a.getFullYear())*12+(this._date.getMonth()-a.getMonth());case"day":default:return Math.floor(n/(1e3*60*60*24))}}startOf(t){const e=new Date(this._date);switch(t){case"year":e.setMonth(0),e.setDate(1),e.setHours(0,0,0,0);break;case"month":e.setDate(1),e.setHours(0,0,0,0);break;case"day":e.setHours(0,0,0,0);break}return new _(e)}endOf(t){const e=new Date(this._date);switch(t){case"year":e.setMonth(11),e.setDate(31),e.setHours(23,59,59,999);break;case"month":e.setDate(new Date(e.getFullYear(),e.getMonth()+1,0).getDate()),e.setHours(23,59,59,999);break;case"day":e.setHours(23,59,59,999);break}return new _(e)}add(t,e){const a=new Date(this._date);switch(e){case"year":a.setFullYear(a.getFullYear()+t);break;case"month":a.setMonth(a.getMonth()+t);break;case"day":a.setDate(a.getDate()+t);break}return new _(a)}subtract(t,e){return this.add(-t,e)}format(t){const e={YYYY:this._date.getFullYear(),MM:(this._date.getMonth()+1).toString().padStart(2,"0"),DD:this._date.getDate().toString().padStart(2,"0"),HH:this._date.getHours().toString().padStart(2,"0"),mm:this._date.getMinutes().toString().padStart(2,"0"),ss:this._date.getSeconds().toString().padStart(2,"0"),dddd:_.daysOfWeek[this._date.getDay()]};return t.replace(/YYYY|MM|DD|HH|mm|ss|dddd/g,a=>e[a].toString())}year(t){if(t===void 0)return this._date.getFullYear();const e=new Date(this._date);return e.setFullYear(t),new _(e)}month(t){if(t===void 0)return this._date.getMonth();const e=new Date(this._date);return e.setMonth(t),new _(e)}date(t){if(t===void 0)return this._date.getDate();const e=new Date(this._date);return e.setDate(t),new _(e)}day(t){if(t===void 0)return this._date.getDay();{const e=this._date.getDay(),a=t-e,n=new Date(this._date);return n.setDate(this._date.getDate()+a),new _(n)}}isBefore(t){const e=new _(t).toDate();return this._date.getTime()<e.getTime()}isAfter(t){const e=new _(t).toDate();return this._date.getTime()>e.getTime()}isSame(t,e="day"){const a=new _(t).toDate();switch(e){case"year":return this._date.getFullYear()===a.getFullYear();case"month":return this._date.getFullYear()===a.getFullYear()&&this._date.getMonth()===a.getMonth();case"day":default:return this._date.getFullYear()===a.getFullYear()&&this._date.getMonth()===a.getMonth()&&this._date.getDate()===a.getDate()}}isBetween(t,e,a){const n=new _(t).startOf(a).toDate(),s=new _(e).endOf(a).toDate(),o=this.toDate();return o>=n&&o<=s}};D(_,"daysOfWeek",["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]);let u=_;const h=r=>new u(r),w=r=>h(r).startOf("day"),p=(r,t)=>{r=w(r),t=w(t);const e=t.diff(r,"day");return Array.from({length:e+1},(a,n)=>r.add(n,"day"))},J={1999:{"New Year's Day,元旦":1,"Spring Festival,春节":3,"Labour Day,劳动节":3,"National Day,国庆节":3},2008:{"Tomb-sweeping Day,清明":1,"Labour Day,劳动节":1,"Dragon Boat Festival,端午":1,"Mid-autumn Festival,中秋":1},2015:{"Anti-Fascist 70th Day,中国人民抗日战争暨世界反法西斯战争胜利70周年纪念日":1},2025:{"Spring Festival,春节":4,"Labour Day,劳动节":2}};class K{constructor(){D(this,"dayDetails",{});D(this,"holidays",{});D(this,"workdays",{});D(this,"inLieuDays",{})}y(t){return this.dayDetails.year=t,this}getHolidayDays(t,e){let a=0;for(const[n,s]of Object.entries(J)){if(parseInt(n)>t)break;s[e]!==void 0&&(a=s[e])}return a}mark(t){return this.dayDetails.holiday=t,this}save(t,e,a){if(!this.dayDetails.year)throw new Error("should set year before saving holiday");if(!this.dayDetails.holiday)throw new Error("should set holiday before saving holiday");this.dayDetails.month=t,this.dayDetails.day=e,this.dayDetails.dayType=a;const n=h(`${this.dayDetails.year}-${t}-${e}`).format("YYYY-MM-DD"),s=this.getHolidayDays(this.dayDetails.year,this.dayDetails.holiday),o=`${this.dayDetails.holiday},${s}`;return a===2?this.holidays[n]=o:a===1?this.workdays[n]=o:a===3&&(this.inLieuDays[n]=o),this}to(t,e){if(!this.dayDetails.holiday||!this.dayDetails.year||!this.dayDetails.month||!this.dayDetails.day)throw new Error("should set year/month/day before saving holiday range");const a=h(`${this.dayDetails.year}-${this.dayDetails.month}-${this.dayDetails.day}`),n=h(`${this.dayDetails.year}-${t}-${e}`);if(n.isBefore(a)||n.isSame(a))throw new Error("end date should be after start date");const s=this.getHolidayDays(this.dayDetails.year,this.dayDetails.holiday),o=`${this.dayDetails.holiday},${s}`,d=n.diff(a,"day");for(let i=1;i<=d;i++){const y=a.add(i,"day").format("YYYY-MM-DD");this.dayDetails.dayType===2?this.holidays[y]=o:this.dayDetails.dayType===1?this.workdays[y]=o:this.dayDetails.dayType===3&&(this.inLieuDays[y]=o)}return this}w(t,e){return this.save(t,e,1)}r(t,e){return this.save(t,e,2)}i(t,e){return this.save(t,e,3)}ny(){return this.mark("New Year's Day,元旦")}s(){return this.mark("Spring Festival,春节")}t(){return this.mark("Tomb-sweeping Day,清明")}l(){return this.mark("Labour Day,劳动节")}d(){return this.mark("Dragon Boat Festival,端午")}n(){return this.mark("National Day,国庆节")}m(){return this.mark("Mid-autumn Festival,中秋")}a(){return this.mark("Anti-Fascist 70th Day,中国人民抗日战争暨世界反法西斯战争胜利70周年纪念日")}}const Q=()=>{const r=new K;return r.y(2025).ny().r(1,1).s().r(1,28).to(2,4).w(1,26).w(2,8).i(2,3).i(2,4).t().r(4,4).to(4,6).l().r(5,1).to(5,5).w(4,27).i(5,5).d().r(5,31).to(6,2).n().r(10,1).to(10,8).w(9,28).w(10,11).i(10,7).i(10,8).m().r(10,6),r.y(2024).ny().r(1,1).s().r(2,10).to(2,17).w(2,4).w(2,18).i(2,15).to(2,16).t().r(4,4).to(4,6).w(4,7).i(4,5).l().r(5,1).to(5,5).w(4,28).w(5,11).i(5,2).to(5,3).d().r(6,10).m().r(9,15).to(9,17).w(9,14).i(9,16).n().r(10,1).to(10,7).w(9,29).w(10,12).i(10,4).i(10,7),r.y(2023).ny().r(1,1).to(1,2).s().r(1,21).to(1,27).w(1,28).to(1,29).i(1,26).to(1,27).t().r(4,5).l().r(4,29).to(5,3).w(4,23).w(5,6).i(5,2).to(5,3).d().r(6,22).to(6,24).w(6,25).i(6,23).m().r(9,29).n().r(9,30).to(10,6).w(10,7).to(10,8).i(10,5).to(10,6),r.y(2022).ny().r(1,1).to(1,3).s().r(1,31).to(2,6).w(1,29).w(1,30).i(2,3).to(2,4).t().r(4,3).to(4,5).w(4,2).i(4,4).l().r(4,30).to(5,4).w(4,24).w(5,7).i(5,3).to(5,4).d().r(6,3).to(6,5).m().r(9,10).to(9,12).n().r(10,1).to(10,7).w(10,8).w(10,9).i(10,6).to(10,7).ny().r(12,31),r.y(2021).ny().r(1,1).to(1,3).s().r(2,11).to(2,17).w(2,7).w(2,20).i(2,16).to(2,17).t().r(4,3).to(4,5).l().r(5,1).to(5,5).w(4,25).w(5,8).i(5,4).to(5,5).d().r(6,12).to(6,14).m().r(9,19).to(9,21).w(9,18).i(9,20).n().r(10,1).to(10,7).w(9,26).w(10,9).i(10,6).to(10,7),r.y(2020).ny().r(1,1).s().r(1,24).to(2,2).w(1,19).i(1,29).t().r(4,4).to(4,6).l().r(5,1).to(5,5).w(4,26).w(5,9).i(5,4).to(5,5).d().r(6,25).to(6,27).w(6,28).i(6,26).n().r(10,1).to(10,8).w(9,27).w(10,10).i(10,7).to(10,8),r.y(2019).ny().r(1,1).s().r(2,4).to(2,10).w(2,2).to(2,3).i(2,4).i(2,8).t().r(4,5).to(4,7).l().r(5,1).to(5,4).w(4,28).w(5,5).i(5,2).i(5,3).d().r(6,7).to(6,9).m().r(9,13).to(9,15).n().r(10,1).to(10,7).w(9,29).w(10,12).i(10,4).i(10,7),r.y(2018).ny().r(1,1).s().r(2,15).to(2,21).w(2,11).w(2,24).i(2,19).to(2,21).t().r(4,5).to(4,7).w(4,8).i(4,6).l().r(4,29).to(5,1).w(4,28).i(4,30).d().r(6,18).n().r(10,1).to(10,7).w(9,29).to(9,30).i(10,4).to(10,5).m().r(9,24).ny().r(12,30).to(12,31).w(12,29).i(12,31),r.y(2017).ny().r(1,1).to(1,2).s().r(1,27).to(2,2).w(1,22).w(2,4).i(2,1).to(2,2).t().r(4,2).to(4,4).w(4,1).i(4,3).l().r(5,1).d().r(5,28).to(5,30).w(5,27).i(5,29).n().r(10,1).to(10,8).w(9,30).i(10,6).m().r(10,4),r.y(2016).ny().r(1,1).s().r(2,7).to(2,13).w(2,6).w(2,14).i(2,11).to(2,12).t().r(4,4).l().r(5,1).to(5,2).d().r(6,9).to(6,11).w(6,12).i(6,10).m().r(9,15).to(9,17).w(9,18).i(9,16).n().r(10,1).to(10,7).w(10,8).to(10,9).i(10,6).to(10,7),r.y(2015).ny().r(1,1).to(1,3).w(1,4).i(1,2).s().r(2,18).to(2,24).w(2,15).w(2,28).i(2,23).to(2,24).t().r(4,5).to(4,6).l().r(5,1).d().r(6,20).r(6,22).m().r(9,27).n().r(10,1).to(10,7).w(10,10).i(10,7).a().r(9,3).to(9,4).w(9,6).i(9,4),r.y(2014).ny().r(1,1).s().r(1,31).to(2,6).w(1,26).w(2,8).i(2,5).to(2,6).t().r(4,5).to(4,7).l().r(5,1).to(5,3).w(5,4).i(5,2).d().r(6,2).m().r(9,8).n().r(10,1).to(10,7).w(9,28).w(10,11).i(10,6).to(10,7),r.y(2013).ny().r(1,1).to(1,3).w(1,5).to(1,6).i(1,2).to(1,3).s().r(2,9).to(2,15).w(2,16).to(2,17).i(2,14).to(2,15).t().r(4,4).to(4,6).w(4,7).i(4,5).l().r(4,29).to(5,1).w(4,27).to(4,28).i(4,29).to(4,30).d().r(6,10).to(6,12).w(6,8).to(6,9).i(6,10).to(6,11).m().r(9,19).to(9,21).w(9,22).i(9,20).n().r(10,1).to(10,7).w(9,29).w(10,12).i(10,4).i(10,7),r.y(2012).ny().r(1,1).to(1,3).i(1,3).s().r(1,22).to(1,28).w(1,21).w(1,29).i(1,26).to(1,27).t().r(4,2).to(4,4).w(3,31).w(4,1).i(4,2).to(4,3).l().r(4,29).to(5,1).w(4,28).i(4,30).d().r(6,22).r(6,24).m().r(9,30).n().r(10,1).to(10,7).w(9,29).i(10,5),r.y(2011).ny().r(1,1).to(1,3).s().r(2,2).to(2,8).w(1,30).w(2,12).i(2,7).to(2,8).t().r(4,3).to(4,5).w(4,2).i(4,4).l().r(4,30).to(5,2).d().r(6,4).r(6,6).m().r(9,10).to(9,12).n().r(10,1).to(10,7).w(10,8).to(10,9).i(10,6).to(10,7).ny().w(12,31),r.y(2010).ny().r(1,1).to(1,3).s().r(2,13).to(2,19).w(2,20).to(2,21).i(2,18).to(2,19).t().r(4,3).to(4,5).l().r(5,1).to(5,3).d().r(6,14).to(6,16).w(6,12).to(6,13).i(6,14).to(6,15).m().r(9,22).to(9,24).w(9,19).w(9,25).i(9,23).to(9,24).n().r(10,1).to(10,7).w(9,26).w(10,9).i(10,6).to(10,7),r.y(2009).ny().r(1,1).to(1,3).w(1,4).i(1,2).s().r(1,25).to(1,31).w(1,24).w(2,1).i(1,29).to(1,30).t().r(4,4).to(4,6).l().r(5,1).to(5,3).d().r(5,28).to(5,30).w(5,31).i(5,29).n().r(10,1).to(10,8).w(9,27).w(10,10).i(10,7).to(10,8).m().r(10,3),r.y(2008).ny().r(1,1).s().r(2,6).to(2,12).w(2,2).to(2,3).i(2,11).to(2,12).t().r(4,4).to(4,6).l().r(5,1).to(5,3).w(5,4).i(5,2).d().r(6,7).to(6,9).m().r(9,13).to(9,15).n().r(9,29).to(10,5).w(9,27).to(9,28).i(9,29).to(9,30),r.y(2007).ny().r(1,1).to(1,3).i(1,2).to(1,3).s().r(2,18).to(2,24).w(2,17).w(2,25).i(2,22).to(2,23).l().r(5,1).to(5,7).w(4,28).to(4,29).i(5,4).i(5,7).n().r(10,1).to(10,7).w(9,29).to(9,30).i(10,4).to(10,5).ny().r(12,30).to(12,31).w(12,29).i(12,31),r.y(2006).ny().r(1,1).to(1,3).s().r(1,29).to(2,4).w(1,28).w(2,5).i(2,2).to(2,3).l().r(5,1).to(5,7).w(4,29).to(4,30).i(5,4).to(5,5).n().r(10,1).to(10,7).w(9,30).w(10,8).i(10,5).to(10,6).ny().w(12,30).to(12,31),r.y(2005).ny().r(1,1).to(1,3).s().r(2,9).to(2,15).w(2,5).to(2,6).i(2,14).to(2,15).l().r(5,1).to(5,7).w(4,30).w(5,8).i(5,5).to(5,6).n().r(10,1).to(10,7).w(10,8).to(10,9).i(10,6).to(10,7),r.y(2004).ny().r(1,1).s().r(1,22).to(1,28).w(1,17).to(1,18).i(1,27).to(1,28).l().r(5,1).to(5,7).w(5,8).to(5,9).i(5,6).to(5,7).n().r(10,1).to(10,7).w(10,9).to(10,10).i(10,6).to(10,7),{holidays:r.holidays,workdays:r.workdays,inLieuDays:r.inLieuDays}},{holidays:b,workdays:k,inLieuDays:X}=Q(),f=r=>{const t=w(r);if(!t.isValid())throw new Error(`unsupported type ${typeof r}, expected type is Date or Dayjs`);return t},F=r=>!g(r),g=r=>{const t=f(r),e=t.day(),a=t.format("YYYY-MM-DD");return!!(k[a]||e>=1&&e<=5&&!b[a])},B=r=>{const t=f(r);return!!X[t.format("YYYY-MM-DD")]},I=r=>{const t=f(r),e=t.format("YYYY-MM-DD");if(k[e])return{date:e,work:!0,name:k[e]};if(b[e])return{date:e,work:!1,name:b[e]};{const a=t.day();return{date:e,work:a!==0&&a!==6,name:t.format("dddd")}}},j=(r,t,e=!0)=>{const a=f(r),n=f(t);return e?p(a,n).filter(F).map(s=>s.format("YYYY-MM-DD")):p(a,n).filter(s=>b[s.format("YYYY-MM-DD")]).map(s=>s.format("YYYY-MM-DD"))},C=(r,t,e=!0)=>{const a=f(r),n=f(t);return e?p(a,n).filter(g).map(s=>s.format("YYYY-MM-DD")):p(a,n).filter(s=>g(s)&&s.day()>=1&&s.day()<=5).map(s=>s.format("YYYY-MM-DD"))},P=(r=0,t=h())=>{if(t=w(t),r===0){if(g(t))return t.format("YYYY-MM-DD");r=1}const e=r>0?1:-1;let a=Math.abs(r);for(;a>0;)t=t.add(e,"day"),g(t)&&a--;return t.format("YYYY-MM-DD")},tt=Object.freeze(Object.defineProperty({__proto__:null,findWorkday:P,getDayDetail:I,getHolidaysInRange:j,getWorkdaysInRange:C,isHoliday:F,isInLieu:B,isWorkday:g},Symbol.toStringTag,{value:"Module"})),et={the_beginning_of_spring:[4.6295,3.87],rain_water:[19.4599,18.73],the_waking_of_insects:[6.3926,5.63],the_spring_equinox:[21.4155,20.646],pure_brightness:[5.59,4.81],grain_rain:[20.888,20.1],the_beginning_of_summer:[6.318,5.52],lesser_fullness_of_grain:[21.86,21.04],grain_in_beard:[6.5,5.678],the_summer_solstice:[22.2,21.37],lesser_heat:[7.928,7.108],greater_heat:[23.65,22.83],the_beginning_of_autumn:[28.35,7.5],the_end_of_heat:[23.95,23.13],white_dew:[8.44,7.646],the_autumn_equinox:[23.822,23.042],code_dew:[9.098,8.318],frost_descent:[24.218,23.438],the_beginning_of_winter:[8.218,7.438],lesser_snow:[23.08,22.36],greater_snow:[7.9,7.18],the_winter_solstice:[22.6,21.94],lesser_cold:[6.11,5.4055],greater_cold:[20.84,20.12]},W={1:["lesser_cold","greater_cold"],2:["the_beginning_of_spring","rain_water"],3:["the_waking_of_insects","the_spring_equinox"],4:["pure_brightness","grain_rain"],5:["the_beginning_of_summer","lesser_fullness_of_grain"],6:["grain_in_beard","the_summer_solstice"],7:["lesser_heat","greater_heat"],8:["the_beginning_of_autumn","the_end_of_heat"],9:["white_dew","the_autumn_equinox"],10:["code_dew","frost_descent"],11:["the_beginning_of_winter","lesser_snow"],12:["greater_snow","the_winter_solstice"]},rt={"2026_rain_water":-1,"2084_the_spring_equinox":1,"1911_the_beginning_of_summer":1,"2008_lesser_fullness_of_grain":1,"1902_grain_in_beard":1,"1928_the_summer_solstice":1,"1925_lesser_heat":1,"2016_lesser_heat":1,"1922_greater_heat":1,"2002_the_beginning_of_autumn":1,"1927_white_dew":1,"1942_the_autumn_equinox":1,"2089_frost_descent":1,"2089_the_beginning_of_winter":1,"1978_lesser_snow":1,"1954_greater_snow":1,"1918_the_winter_solstice":-1,"2021_the_winter_solstice":-1,"1982_lesser_cold":1,"2019_lesser_cold":-1,"2000_greater_cold":1,"2082_greater_cold":1},q={lesser_cold:"小寒",greater_cold:"大寒",the_beginning_of_spring:"立春",rain_water:"雨水",the_waking_of_insects:"惊蛰",the_spring_equinox:"春分",pure_brightness:"清明",grain_rain:"谷雨",the_beginning_of_summer:"立夏",lesser_fullness_of_grain:"小满",grain_in_beard:"芒种",the_summer_solstice:"夏至",lesser_heat:"小暑",greater_heat:"大暑",the_beginning_of_autumn:"立秋",the_end_of_heat:"处暑",white_dew:"白露",the_autumn_equinox:"秋分",code_dew:"寒露",frost_descent:"霜降",the_beginning_of_winter:"立冬",lesser_snow:"小雪",greater_snow:"大雪",the_winter_solstice:"冬至"},S=(r,t,e)=>{const a=r>=2e3?21:20,n=r%100,s=.2422,o=et[e][a===21?1:0];let d=Math.floor(n/4);["lesser_cold","greater_cold","the_beginning_of_spring","rain_water"].includes(e)&&(d=Math.floor((n-1)/4));let i=Math.floor(n*s+o)-d;const y=rt[`${r}_${e}`];return y&&(i+=y),h(`${r}-${t}-${i}`).format("YYYY-MM-DD")},U=(r,t)=>{const e=[];let a=w(r);const n=w(t||r);for(;a.isBefore(n)||a.isSame(n);){const s=a.year(),o=a.month()+1;W[o].forEach(d=>{const i=h(S(s,o,d));(i!=null&&i.isBefore(n)||i!=null&&i.isSame(n))&&(i!=null&&i.isAfter(a)||i!=null&&i.isSame(a))&&e.push({date:i.format("YYYY-MM-DD"),term:d,name:q[d],index:1})}),o===12?a=a.add(1,"year").startOf("year"):a=a.add(1,"month").startOf("month")}return e},v=(r,t)=>{let e=w(r).subtract(1,"month");const a=w(t||r).add(1,"month"),n=[];for(;e.isBefore(a)||e.isSame(a);){const o=e.year(),d=e.month()+1;W[d].forEach(i=>{const y=h(S(o,d,i));n.push({term:i,date:y})}),e.month()===11?e=e.add(1,"year").startOf("year"):e=e.add(1,"month").startOf("month")}const s=[];return n.forEach((o,d)=>{for(let i=o.date;n[d+1]&&i.isBefore(n[d+1].date);i=i.add(1,"day"))s.push({day:i,term:o.term,name:q[o.term],index:i.diff(o.date,"day")+1})}),t||(t=r),s.filter(o=>o.day.isBetween(r,t,"day")).map(o=>({date:o.day.format("YYYY-MM-DD"),term:o.term,name:o.name,index:o.index}))},at=Object.freeze(Object.defineProperty({__proto__:null,getSolarTermDate:S,getSolarTerms:U,getSolarTermsInRange:v},Symbol.toStringTag,{value:"Module"})),M=[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],T=["零","一","二","三","四","五","六","七","八","九"],x=["正","二","三","四","五","六","七","八","九","十","冬","腊"],z=["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"],V=["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"],nt=["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"],Z=r=>{let t=348;for(let e=32768;e>8;e>>=1)t+=M[r-1900]&e?1:0;return t+N(r)},L=r=>M[r-1900]&15,N=r=>L(r)?M[r-1900]&65536?30:29:0,O=r=>z[r%10]+V[r%12],m=(r,t)=>M[r-1900]&65536>>t?30:29,ot=r=>nt[(r-4)%12],st=r=>{const t=["初","十","廿","三十"];if(r===10)return"初十";if(r===20)return"二十";if(r===30)return"三十";const e=Math.floor(r/10),a=r%10;return t[e]+T[a]},it=r=>`${z[(r-4)%10]}${V[(r-4)%12]}年`,$=(r,t)=>{const e=[];for(let a=r;a<=t;a++)e.push({year:a,lunarYear:it(a),lunarYearCN:a.toString().split("").map(n=>T[Number(n)]).join("")});return e},E=r=>{const t=L(r);return{year:r,leapMonth:t||void 0,leapMonthCN:t?`闰${x[t-1]}月`:void 0,days:t?M[r-1900]&65536?30:29:0}},Y=r=>{const t=new Array(7).fill(0);let e=0,a=0;const n=h(new Date(1900,0,31)),s=h(r);let o=s.diff(n,"day");t[5]=o+40,t[4]=14;let d=1900;for(;d<2100&&o>0;d++)e=Z(d),o-=e,t[4]+=12;o<0&&(o+=e,d--,t[4]-=12),t[0]=d,t[3]=d-1864,a=L(d),t[6]=0;for(let i=1;i<13&&o>=0;i++)a>0&&i===a+1&&t[6]===0?(--i,t[6]=1,e=N(d)):e=m(d,i),t[6]===1&&i===a+1&&(t[6]=0),o-=e,t[6]===0&&t[4]++,t[1]=i;return o<0&&(o+=e,t[1]--,t[4]--),t[2]=o+1,{date:s.format("YYYY-MM-DD"),lunarYear:t[0],lunarMon:t[1]+1,lunarDay:t[2],isLeap:!!t[6],zodiac:ot(t[0]),yearCyl:O(t[3]),monCyl:O(t[4]),dayCyl:O(t[5]),lunarYearCN:`${t[0].toString().split("").map(i=>T[Number(i)]).join("")}`,lunarMonCN:`${x[t[1]]}月`,lunarDayCN:st(t[2])}},H=(r,t)=>{const e=h(r),a=h(t),n=[];for(let s=e;s.isBefore(a)||s.isSame(a,"day");s=s.add(1,"day"))n.push(Y(s));return n},R=r=>{const t=h(r),e=t.year(),a=t.month()+1,n=t.date();let s=0;for(let c=1900;c<e;c++)s+=Z(c);let o=L(e);for(let c=1;c<a;c++)s+=m(e,c),c===o&&(s+=N(e));s+=n-1;const d=h(new Date(1900,0,31)),i=d.add(s,"day").format("YYYY-MM-DD");let y=s,G;return o===a&&(y+=m(e,a),G=d.add(y,"day").format("YYYY-MM-DD")),{date:i,leapMonthDate:G}},dt=Object.freeze(Object.defineProperty({__proto__:null,default:{getLunarYears:$,getYearLeapMonth:E,getLunarDate:Y,getLunarDatesInRange:H,getSolarDateFromLunar:R},getLunarDate:Y,getLunarDatesInRange:H,getLunarYears:$,getSolarDateFromLunar:R,getYearLeapMonth:E,monthDays:m},Symbol.toStringTag,{value:"Module"})),lt={1:{1:["春节","鸡日","元始天尊诞辰"],2:["犬日"],3:["猪日","小年朝"],4:["羊日","孙天医诞辰"],5:["牛日","破五日","开市","路神诞辰"],6:["马日"],7:["人日","送火神"],8:["谷日","阎王诞辰"],9:["天日","玉皇诞辰"],10:["地日","石头生日"],13:["上(试)灯日","关公升天日"],15:["元宵节","上元节","正灯日","天官诞辰"],18:["落灯日"],25:["天仓(填仓)节"]},2:{1:["太阳生日"],2:["春龙节","土地公生日","济公活佛生日"],3:["文昌帝君诞辰"],12:["百花生日(花朝节)"],15:["九天玄女诞辰","太上老君诞辰","精忠岳王诞辰"],19:["观音菩萨诞辰"],21:["普贤菩萨诞辰"]},3:{3:["上巳节"],15:["赵公元帅诞辰","泰山老母诞辰"]},4:{1:["祭雹神"],4:["文殊菩萨诞辰"],8:["浴佛节(龙华会)"],12:["蛇王诞辰"],14:["吕洞宾诞辰"],18:["华佗诞辰"],28:["药王(神农)诞辰"]},5:{5:["端午节"],13:["雨节","黄帝诞辰"]},6:{1:["半年节"],6:["晒衣节"],19:["观音菩萨得道"],24:["雷神诞辰","荷花生日","关公诞辰"]},7:{1:["祭海神"],7:["乞巧节"],15:["中元(鬼)节","地官诞辰(孟兰盆会)"],18:["西王母诞辰"],20:["棉花生日"],23:["诸葛亮诞辰"],30:["地藏菩萨诞辰"]},8:{1:["天医节"],3:["灶君生日"],8:["瑶池大会"],15:["中秋节"],20:["水稻生日"],28:["孔子诞辰"]},9:{9:["重阳节"],19:["观音菩萨出家"]},10:{1:["十月朝","寒衣节"],15:["下元节","水官诞辰"]},12:{8:["腊八节"],23:["官家送灶"],24:["民间送灶"],25:["接玉皇"]}},ht=[(r,t)=>{const e=r.add(1,"day");v(e).find(n=>n.term==="pure_brightness")&&t.push({date:r.format("YYYY-MM-DD"),name:"寒食节",type:"solar_term"})},(r,t)=>{const e=Y(r);if(e.lunarMon===12&&e.lunarDay===m(e.lunarYear,12)){const a=r.format("YYYY-MM-DD");["除夕","封井","祭井神","贴春联","迎财神"].forEach(n=>{t.push({date:a,name:n,type:"lunar"})})}}],A=(r,t)=>{var s;const e=[];let a=h(r);const n=h(t||r);for(;a.isBefore(n)||a.isSame(n);){const o=Y(a);o.isLeap||(((s=lt[o.lunarMon])==null?void 0:s[o.lunarDay])||[]).forEach(i=>{e.push({date:a.format("YYYY-MM-DD"),name:i,type:"lunar"})}),ht.forEach(d=>d(a,e)),a=a.add(1,"day")}return e.reduce((o,d)=>{const i=o.find(y=>y.date===d.date);return i?i.name.push(d.name):o.push({date:d.date,name:[d.name]}),o},[])},_t={...tt,...at,...dt,...Object.freeze(Object.defineProperty({__proto__:null,default:{getLunarFestivals:A},getLunarFestivals:A},Symbol.toStringTag,{value:"Module"}))};l.default=_t,l.findWorkday=P,l.getDayDetail=I,l.getHolidaysInRange=j,l.getLunarDate=Y,l.getLunarDatesInRange=H,l.getLunarFestivals=A,l.getLunarYears=$,l.getSolarDateFromLunar=R,l.getSolarTermDate=S,l.getSolarTerms=U,l.getSolarTermsInRange=v,l.getWorkdaysInRange=C,l.getYearLeapMonth=E,l.isHoliday=F,l.isInLieu=B,l.isWorkday=g,l.monthDays=m,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});