lunisolar
Version:
专业农历库,支持公历阴历互转,支持各类黄历数据查询,如八字四柱、阴历、神煞宜忌、时辰吉凶、建除十二神、胎神占方、五行纳音等。支持自定义插件。
83 lines (77 loc) • 2.09 kB
text/typescript
import { leave4BadAct } from '../actData'
/**
* 天干百忌
* @param stemValue 天干索引值
* @returns [宜[], 忌[]]
*/
export function getStemActs(stemValue: number): [string[], string[]] {
const stemActs: [string[], string[]][] = [
[[], ['開倉']],
[[], ['栽種']],
[[], []],
[[], ['整容', '剃頭']],
[[], []],
[[], []],
[[], ['經絡']],
[[], ['酝酿']],
[[], ['开渠', '穿井']],
[[], []]
]
return stemActs[stemValue % 10]
}
/**
* 地支百忌
* @param stemValue 地支索引值
* @returns [宜[], 忌[]]
*/
export function getBranchActs(branchValue: number): [string[], string[]] {
const branchActs: [string[], string[]][] = [
[['沐浴'], []],
[[], ['冠帶']],
[[], ['祭祀']],
[[], ['穿井']],
[[], []],
[[], ['出行']],
[[], ['苫蓋']],
[[], ['求醫療病']],
[[], ['安床']],
[[], ['宴會']],
[[], []],
[['沐浴'], ['嫁娶']]
]
return branchActs[branchValue % 12]
}
/**
* 補充天干地支百忌
* @param sb 天干地支對象實例
* @param acts 宜忌對象
*/
export function addSBActs(sb: lunisolar.SB, acts: ActsSet) {
const [sGood, sBad] = getStemActs(sb.stem.value)
const [bGood, bBad] = getBranchActs(sb.branch.value)
for (const g of sGood) acts.good.add(g)
for (const b of sBad) acts.bad.add(b)
for (const g of bGood) acts.good.add(g)
for (const b of bBad) acts.bad.add(b)
}
/**
* 補充陰歷宜忌 (人神所在日、月相等)
* @param lunar 陰歷實例
* @param acts 宜忌對象
*/
export function addLunarActs(lunar: lunisolar.Lunar, acts: ActsSet) {
// 人神所在日
if (lunar.day === 12) acts.bad.add('剃頭')
else if (lunar.day === 15) {
acts.bad.add('剃頭')
acts.bad.add('整手足甲')
} else if ([1, 6, 19, 21, 23]) acts.bad.add('整手足甲')
// 朔望弦
if ([1, 15, 7, 8, 22, 23].includes(lunar.day)) acts.bad.add('求醫療病')
// 晦 (所忌與四離四絕相同)
if (lunar.isLastDayOfMonth) {
for (const b of leave4BadAct) {
acts.bad.add(b)
}
}
}