UNPKG

chinese-days

Version:

中国节假日、调休日、工作日、24节气查询,农历阳历互转,支持 TS、CommonJS、UMD 模块化使用,提供 ics 日历格式,可供 Google Calendar、Apple Calendar、Microsoft Outlook 等客户端订阅。

2 lines (1 loc) 23.3 kB
(function(d,_){typeof exports=="object"&&typeof module<"u"?_(exports):typeof define=="function"&&define.amd?define(["exports"],_):(d=typeof globalThis<"u"?globalThis:d||self,_(d.chineseDays={}))})(this,function(d){"use strict";var _t=Object.defineProperty;var yt=(d,_,h)=>_ in d?_t(d,_,{enumerable:!0,configurable:!0,writable:!0,value:h}):d[_]=h;var D=(d,_,h)=>yt(d,typeof _!="symbol"?_+"":_,h);const u=class u{constructor(t){D(this,"_date");t instanceof u?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,r="day"){const a=new u(t).toDate(),n=this._date.getTime()-a.getTime();switch(r){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 r=new Date(this._date);switch(t){case"year":r.setMonth(0),r.setDate(1),r.setHours(0,0,0,0);break;case"month":r.setDate(1),r.setHours(0,0,0,0);break;case"day":r.setHours(0,0,0,0);break}return new u(r)}endOf(t){const r=new Date(this._date);switch(t){case"year":r.setMonth(11),r.setDate(31),r.setHours(23,59,59,999);break;case"month":r.setDate(new Date(r.getFullYear(),r.getMonth()+1,0).getDate()),r.setHours(23,59,59,999);break;case"day":r.setHours(23,59,59,999);break}return new u(r)}add(t,r){const a=new Date(this._date);switch(r){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 u(a)}subtract(t,r){return this.add(-t,r)}format(t){const r={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:u.daysOfWeek[this._date.getDay()]};return t.replace(/YYYY|MM|DD|HH|mm|ss|dddd/g,a=>r[a].toString())}year(t){if(t===void 0)return this._date.getFullYear();const r=new Date(this._date);return r.setFullYear(t),new u(r)}month(t){if(t===void 0)return this._date.getMonth();const r=new Date(this._date);return r.setMonth(t),new u(r)}date(t){if(t===void 0)return this._date.getDate();const r=new Date(this._date);return r.setDate(t),new u(r)}day(t){if(t===void 0)return this._date.getDay();{const r=this._date.getDay(),a=t-r,n=new Date(this._date);return n.setDate(this._date.getDate()+a),new u(n)}}isBefore(t){const r=new u(t).toDate();return this._date.getTime()<r.getTime()}isAfter(t){const r=new u(t).toDate();return this._date.getTime()>r.getTime()}isSame(t,r="day"){const a=new u(t).toDate();switch(r){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,r,a){const n=new u(t).startOf(a).toDate(),l=new u(r).endOf(a).toDate(),o=this.toDate();return o>=n&&o<=l}};D(u,"daysOfWeek",["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]);let _=u;const h=e=>new _(e),w=e=>h(e).startOf("day"),p=(e,t)=>{e=w(e),t=w(t);const r=t.diff(e,"day");return Array.from({length:r+1},(a,n)=>e.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,r){let a=0;for(const[n,l]of Object.entries(J)){if(parseInt(n)>t)break;l[r]!==void 0&&(a=l[r])}return a}mark(t){return this.dayDetails.holiday=t,this}save(t,r,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=r,this.dayDetails.dayType=a;const n=h(`${this.dayDetails.year}-${t}-${r}`).format("YYYY-MM-DD"),l=this.getHolidayDays(this.dayDetails.year,this.dayDetails.holiday),o=`${this.dayDetails.holiday},${l}`;return a===2?this.holidays[n]=o:a===1?this.workdays[n]=o:a===3&&(this.inLieuDays[n]=o),this}to(t,r){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}-${r}`);if(n.isBefore(a)||n.isSame(a))throw new Error("end date should be after start date");const l=this.getHolidayDays(this.dayDetails.year,this.dayDetails.holiday),o=`${this.dayDetails.holiday},${l}`,i=n.diff(a,"day");for(let s=1;s<=i;s++){const y=a.add(s,"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,r){return this.save(t,r,1)}r(t,r){return this.save(t,r,2)}i(t,r){return this.save(t,r,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 e=new K;return e.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),e.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),e.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),e.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),e.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),e.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),e.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),e.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),e.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),e.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),e.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),e.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),e.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),e.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),e.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),e.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),e.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),e.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),e.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),e.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),e.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),e.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:e.holidays,workdays:e.workdays,inLieuDays:e.inLieuDays}},{holidays:b,workdays:k,inLieuDays:X}=Q(),c=(...e)=>{if(e.length!==1)return e.map(r=>c(r));const t=w(e[0]);if(!t.isValid())throw new Error(`unsupported type ${typeof t}, expected type is Date or Dayjs`);return t},F=e=>!g(e),g=e=>{const t=c(e),r=t.day(),a=t.format("YYYY-MM-DD");return!!(k[a]||r>=1&&r<=5&&!b[a])},B=e=>(e=c(e),!!X[e.format("YYYY-MM-DD")]),I=e=>{e=c(e);const t=e.format("YYYY-MM-DD");if(k[t])return{date:t,work:!0,name:k[t]};if(b[t])return{date:t,work:!1,name:b[t]};{const r=e.day();return{date:t,work:r!==0&&r!==6,name:e.format("dddd")}}},j=(e,t,r=!0)=>(e=c(e),t=c(t),r?p(e,t).filter(F).map(a=>a.format("YYYY-MM-DD")):p(e,t).filter(a=>b[a.format("YYYY-MM-DD")]).map(a=>a.format("YYYY-MM-DD"))),C=(e,t,r=!0)=>(e=c(e),t=c(t),r?p(e,t).filter(g).map(a=>a.format("YYYY-MM-DD")):p(e,t).filter(a=>g(a)&&a.day()>=1&&a.day()<=5).map(a=>a.format("YYYY-MM-DD"))),P=(e=0,t=h())=>{if(t=w(t),e===0){if(g(t))return t.format("YYYY-MM-DD");e=1}const r=e>0?1:-1;let a=Math.abs(e);for(;a>0;)t=t.add(r,"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=(e,t,r)=>{const a=e>=2e3?21:20,n=e%100,l=.2422,o=et[r][a===21?1:0];let i=Math.floor(n/4);["lesser_cold","greater_cold","the_beginning_of_spring","rain_water"].includes(r)&&(i=Math.floor((n-1)/4));let s=Math.floor(n*l+o)-i;const y=rt[`${e}_${r}`];return y&&(s+=y),h(`${e}-${t}-${s}`).format("YYYY-MM-DD")},U=(e,t)=>{const r=[];let a=w(e);const n=w(t||e);for(;a.isBefore(n)||a.isSame(n);){const l=a.year(),o=a.month()+1;W[o].forEach(i=>{const s=h(S(l,o,i));(s!=null&&s.isBefore(n)||s!=null&&s.isSame(n))&&(s!=null&&s.isAfter(a)||s!=null&&s.isSame(a))&&r.push({date:s.format("YYYY-MM-DD"),term:i,name:q[i],index:1})}),o===12?a=a.add(1,"year").startOf("year"):a=a.add(1,"month").startOf("month")}return r},T=(e,t)=>{let r=w(e).subtract(1,"month");const a=w(t||e).add(1,"month"),n=[];for(;r.isBefore(a)||r.isSame(a);){const o=r.year(),i=r.month()+1;W[i].forEach(s=>{const y=h(S(o,i,s));n.push({term:s,date:y})}),r.month()===11?r=r.add(1,"year").startOf("year"):r=r.add(1,"month").startOf("month")}const l=[];return n.forEach((o,i)=>{for(let s=o.date;n[i+1]&&s.isBefore(n[i+1].date);s=s.add(1,"day"))l.push({day:s,term:o.term,name:q[o.term],index:s.diff(o.date,"day")+1})}),t||(t=e),l.filter(o=>o.day.isBetween(e,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:T},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],v=["零","一","二","三","四","五","六","七","八","九"],x=["正","二","三","四","五","六","七","八","九","十","冬","腊"],z=["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"],V=["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"],ot=["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"],Z=e=>{let t=348;for(let r=32768;r>8;r>>=1)t+=M[e-1900]&r?1:0;return t+N(e)},L=e=>M[e-1900]&15,N=e=>L(e)?M[e-1900]&65536?30:29:0,O=e=>z[e%10]+V[e%12],m=(e,t)=>M[e-1900]&65536>>t?30:29,nt=e=>ot[(e-4)%12],st=e=>{const t=["初","十","廿","三十"];if(e===10)return"初十";if(e===20)return"二十";if(e===30)return"三十";const r=Math.floor(e/10),a=e%10;return t[r]+(a?v[a]:"")},it=e=>`${z[(e-4)%10]}${V[(e-4)%12]}年`,$=(e,t)=>{const r=[];for(let a=e;a<=t;a++)r.push({year:a,lunarYear:it(a),lunarYearCN:a.toString().split("").map(n=>v[Number(n)]).join("")});return r},E=e=>{const t=L(e);return{year:e,leapMonth:t||void 0,leapMonthCN:t?`闰${x[t-1]}月`:void 0,days:t?M[e-1900]&65536?30:29:0}},Y=e=>{const t=new Array(7).fill(0);let r=0,a=0;const n=h(new Date(1900,0,31)),l=h(e);let o=l.diff(n,"day");t[5]=o+40,t[4]=14;let i=1900;for(;i<2100&&o>0;i++)r=Z(i),o-=r,t[4]+=12;o<0&&(o+=r,i--,t[4]-=12),t[0]=i,t[3]=i-1864,a=L(i),t[6]=0;for(let s=1;s<13&&o>=0;s++)a>0&&s===a+1&&t[6]===0?(--s,t[6]=1,r=N(i)):r=m(i,s),t[6]===1&&s===a+1&&(t[6]=0),o-=r,t[6]===0&&t[4]++,t[1]=s;return o===0&&a>0&&t[6]===1?t[6]=0:o<0&&(o+=r,t[1]--,t[4]--),t[2]=o+1,{date:l.format("YYYY-MM-DD"),lunarYear:t[0],lunarMon:t[1]+1,lunarDay:t[2],isLeap:!!t[6],zodiac:nt(t[0]),yearCyl:O(t[3]),monCyl:O(t[4]),dayCyl:O(t[5]),lunarYearCN:`${t[0].toString().split("").map(s=>v[Number(s)]).join("")}`,lunarMonCN:`${x[t[1]]}月`,lunarDayCN:st(t[2])}},H=(e,t)=>{const r=h(e),a=h(t),n=[];for(let l=r;l.isBefore(a)||l.isSame(a,"day");l=l.add(1,"day"))n.push(Y(l));return n},R=e=>{const t=h(e),r=t.year(),a=t.month()+1,n=t.date();let l=0;for(let f=1900;f<r;f++)l+=Z(f);let o=L(r);for(let f=1;f<a;f++)l+=m(r,f),f===o&&(l+=N(r));l+=n-1;const i=h(new Date(1900,0,31)),s=i.add(l,"day").format("YYYY-MM-DD");let y=l,G;return o===a&&(y+=m(r,a),G=i.add(y,"day").format("YYYY-MM-DD")),{date:s,leapMonthDate:G}},lt=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"})),dt={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=[(e,t)=>{const r=e.add(1,"day");T(r).find(n=>n.term==="pure_brightness")&&t.push({date:e.format("YYYY-MM-DD"),name:"寒食节",type:"solar_term"})},(e,t)=>{const r=Y(e);if(r.lunarMon===12&&r.lunarDay===m(r.lunarYear,12)){const a=e.format("YYYY-MM-DD");["除夕","封井","祭井神","贴春联","迎财神"].forEach(n=>{t.push({date:a,name:n,type:"lunar"})})}}],A=(e,t)=>{var l;const r=[];let a=h(e);const n=h(t||e);for(;a.isBefore(n)||a.isSame(n);){const o=Y(a);o.isLeap||(((l=dt[o.lunarMon])==null?void 0:l[o.lunarDay])||[]).forEach(s=>{r.push({date:a.format("YYYY-MM-DD"),name:s,type:"lunar"})}),ht.forEach(i=>i(a,r)),a=a.add(1,"day")}return r.reduce((o,i)=>{const s=o.find(y=>y.date===i.date);return s?s.name.push(i.name):o.push({date:i.date,name:[i.name]}),o},[])},ut={...tt,...at,...lt,...Object.freeze(Object.defineProperty({__proto__:null,default:{getLunarFestivals:A},getLunarFestivals:A},Symbol.toStringTag,{value:"Module"}))};d.default=ut,d.findWorkday=P,d.getDayDetail=I,d.getHolidaysInRange=j,d.getLunarDate=Y,d.getLunarDatesInRange=H,d.getLunarFestivals=A,d.getLunarYears=$,d.getSolarDateFromLunar=R,d.getSolarTermDate=S,d.getSolarTerms=U,d.getSolarTermsInRange=T,d.getWorkdaysInRange=C,d.getYearLeapMonth=E,d.isHoliday=F,d.isInLieu=B,d.isWorkday=g,d.monthDays=m,Object.defineProperties(d,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});