tyme4mb

Tyme4MB - 中国传统历法计算库的 MoonBit 移植版本,支持公历、农历、藏历、回历、干支、八字、节气、神煞、宜忌等

calendar
lunar
chinese-calendar
astronomy
bazi
moon add justinwongcn/tyme4mb@0.2.1
Download zip
Version
0.2.1
License
MIT
Last updated
11 days ago
Downloads
8
README

#Tyme4MB License

Tyme4MB 是 tyme4go 的 MoonBit 移植版本。Tyme 是一个非常强大的日历工具库,可以看作 Lunar 的升级版,拥有更优的设计和扩展性,支持公历、农历、藏历(饶迥历)、回历、星座、干支、生肖、节气、月相、法定假日、八字、童限、大运、小运、神煞、宜忌等。

基于 MoonBit 语言开发,编译目标为 WASM。

#功能概览

模块说明
公历格里高利历(年/月/日/时/分/秒/星期/季节/半年/周)
农历中国传统阴阳合历(含闰月、节气定位)
回历伊斯兰历法
藏历(饶迥历)印尼巴厘岛历法
干支六十甲子循环(年/月/日/时四柱)
八字四柱命理(含胎元、命宫、身宫、纳音、真太阳时反推)
节气二十四节气精确时刻计算(基于寿星天文历算法)
神煞130 种吉凶神煞
宜忌每日/时辰宜忌查询
童限/大运/小运命理推算(支持 Default、China95、LunarSect1、LunarSect2 四种流派)
星座黄道十二星座
月相新月/上弦月/满月/下弦月等月相计算
法定假日中国法定节假日及调休安排(2001年至今)
事件自定义节日/事件管理与查询
其他二十八星宿、九星、六曜、小六壬、灶马头、彭祖百忌、胎神等

#安装

# 通过 mooncakes.io 安装(发布后可用) moon add justinwongcn/tyme4mb

#快速开始

import tyme.{SolarDay, LunarDay, EightChar, LunarHour} // 1. 公历日 let solarDay = SolarDay::from_ymd(1986, 5, 29).unwrap() println(solarDay.to_string()) // 1986年5月29日 // 2. 公历转农历 let lunarDay = solarDay.get_lunar_day() println(lunarDay.to_string()) // 农历丙寅年四月廿一 // 3. 公历转藏历 let rabByungDay = solarDay.get_rab_byung_day() println(rabByungDay.to_string()) // 第十七饶迥火虎年四月廿一 // 4. 公历转回历 let hijriDay = solarDay.get_hijri_day() println(hijriDay.to_string()) // 1406年赖买丹月20日 // 5. 八字排盘 let solarTime = SolarTime::from_ymdhms(1986, 5, 29, 13, 0, 0).unwrap() let lunarHour = solarTime.get_lunar_hour().unwrap() let eightChar = eight_char_provider.get_eight_char(lunarHour) println(eightChar.to_string()) // 丙寅 癸巳 癸酉 己未

#构建

# 构建库 moon build # 运行测试 moon test # 运行示例 moon run examples

#项目结构

tyme4mb/ ├── tyme/ # 稳定的 @tyme 兼容入口 │ ├── moon.pkg # facade 包声明 │ ├── reexports.mbt # 保持原公开类型、函数和 trait 名称 │ ├── core/ # 领域实现(sealed trait 与历法类型) │ │ ├── moon.pkg │ │ ├── solar_*.mbt # 公历相关 │ │ ├── lunar_*.mbt # 农历相关 │ │ ├── hijri_*.mbt # 回历 │ │ ├── rab_byung_*.mbt # 藏历(饶迥历) │ │ ├── sixty_cycle*.mbt # 六十甲子 │ │ └── *_wbtest.mbt # 包内单元测试 │ └── astronomy/ # 无领域类型依赖的纯天文算法 │ ├── moon.pkg │ └── shou_xing_util.mbt ├── examples/ # 示例工程 ├── openwiki/ # 自动生成的文档 ├── .github/workflows/ # CI/CD ├── moon.mod # 模块声明 └── LICENSE # MIT 许可证

#测试

项目包含 43 个测试文件,约 3,200 行测试代码,涵盖:

  • 各模块的单元测试(对应 Go 版本的一比一翻译)
  • 全量交叉引用测试(xref_all_wbtest.mbt,~2100行)
  • 神煞/宜忌差分测试(xref_gt_wbtest.mbt
  • 八字真太阳时测试
  • 事件管理器完整测试

# 运行全部测试 moon test

#移植来源

本项目移植自 tyme4go(Go 版本),采用逐函数翻译方式,保留了原始算法和数据表。详细的移植说明请参阅 PORTING.md

#致谢

  1. 感谢 6tail 创建并开源了 tyme4go 项目,本项目移植自该仓库
  2. 感谢许剑伟老师分享的寿星天文历,节气算法引自 sxwnl/sxwnl
  3. 感谢 stonelf,藏历数据引自 stonelf/zangli

#文档

更详细的文档请参阅 OpenWiki

#许可证