lunisolar
Version:
专业农历库,支持公历阴历互转,支持各类黄历数据查询,如八字四柱、阴历、神煞宜忌、时辰吉凶、建除十二神、胎神占方、五行纳音等。支持自定义插件。
71 lines (62 loc) • 1.84 kB
text/typescript
import type { Stem } from '../../../class/stemBranch'
import { TenGod } from '../class/tenGod'
import { getTranslation } from '../../../utils'
import { TEN_GOD_RELATIONS as TGR } from '../constants'
export const char8exGlobal: { locales: { [key: string]: any } } = {
locales: {}
}
export const setLocales = function (locales: { [key: string]: any }) {
char8exGlobal.locales = locales
}
export const trans = function (key: string, lang: string = 'zh') {
const locale = char8exGlobal.locales[lang]
if (!locale) return key
const tKey = `char8ex.${key}`
return getTranslation(locale, tKey)
}
/**
* 通过两天干五生生克计算十神
*/
export const computeTenGodByStem = function (
me: Stem,
targetStem: Stem,
lang: string = 'zh'
): TenGod {
const isNotSame = me.value % 2 === targetStem.value % 2 ? 0 : 1
// const meE5V = me.e5.value
const targetE5V = targetStem.e5.value
let trgKey: keyof typeof TGR
if (me.e5.generating().value === targetE5V) {
// 我生者
trgKey = 'generating'
} else if (me.e5.weakening().value === targetE5V) {
// 生我者
trgKey = 'weakening'
} else if (me.e5.overcoming().value === targetE5V) {
// 我克者
trgKey = 'overcoming'
} else if (me.e5.counteracting().value === targetE5V) {
// 克我者
trgKey = 'counteracting'
} else {
// 同我者
trgKey = 'sibling'
}
return TenGod.create(TGR[trgKey][isNotSame], { lang })
}
/**
* 月份数转地支序号
* @param month 月份数
* @returns 地支序号(从0开始)
*/
export const month2BranchValue = (month: number): number => {
return (month + 1) % 12
}
/**
* 地支序号转月份数
* @param branchValue 地支序号
* @returns 月份数(1~12)
*/
export const branchValue2month = (branchValue: number): number => {
return (12 + branchValue - 1) % 12
}