| Crates.io | sxwnl4rust |
| lib.rs | sxwnl4rust |
| version | 0.1.2 |
| created_at | 2025-03-20 03:45:29.206381+00 |
| updated_at | 2025-04-24 01:17:27.944279+00 |
| description | 寿星万年历的rust版本 |
| homepage | |
| repository | https://github.com/johnhelf/sxwnl4rust |
| max_upload_size | |
| id | 1598849 |
| size | 1,039,342 |
sxwnl4rust 是在 Claude-3.7-sonnet 的辅助下,从许剑伟老师的寿星天文历(万年历)JavaScript 版本移植到 Rust 的项目。原项目是一款精准的跨度大的天文历法工具,可作为一般的实用日历工具,对史学工作者、历算工作者、天文爱好者均有较大的参考价值。
原项目地址:https://github.com/sxwnl/sxwnl
⚠️ 注意事项:
由于原项目是用 JavaScript 编写的,在移植过程中存在一些实现上的差异:
use chrono::{TimeZone, Utc};
fn main() {
// 创建农历计算实例
let lunar = sxwnl4rust::lunar::lunar::LunarCalendar::default();
// 设置公历日期(年、月、日)
let date = Utc.with_ymd_and_hms(2025, 5, 1, 12, 0, 0).single().unwrap();
// 获取农历信息
let lunar_day = lunar.get_day_info(&date, 116.4); // 使用北京经度
// 输出农历日期信息
println!("公历日期: 2025年5月1日");
println!(
"农历日期: {}年{}月{}",
lunar_day.lunar_year, lunar_day.lunar_month_name, lunar_day.lunar_day_name
);
println!("干支纪年: {}", lunar_day.gan_zhi_year);
println!("干支纪月: {}", lunar_day.gan_zhi_month);
println!("干支纪日: {}", lunar_day.gan_zhi_day);
println!("生肖: {}", lunar_day.sheng_xiao);
}
更多示例请参考 examples 目录下的示例代码。
sxwnl4rust/
├── Cargo.toml # 项目配置文件
├── README.md # 项目说明文档
├── src/
│ ├── lib.rs # 库入口文件
│ ├── lunar/ # 农历相关模块
│ │ ├── mod.rs # 农历模块入口
│ │ ├── lunar.rs # 农历核心算法
│ │ ├── solar_terms.rs # 农历节气计算
│ │ └── niao_hao.rs # 中国古代年号
│ ├── eph/ # 天文历相关模块
│ │ ├── mod.rs # 天文历模块入口
│ │ ├── eph.rs # 天文历核心算法
│ │ ├── msc.rs # 日月计算
│ │ ├── eph_base.rs # 基础天文算法
│ │ ├── jd.rs # 儒略日转换
│ │ ├── delta_t.rs # 黄道坐标转换
│ │ ├── eph_ssb.rs # 地球的SSB速度计算
│ │ ├── nutation.rs # 章动计算
│ │ ├── prece.rs # 岁差表
│ │ ├── szj.rs # 日月升降计算
│ │ └── xl.rs # 星历计算
│ ├── funcs/ # 其它功能模块
│ │ ├── mod.rs # 工具模块入口
│ └── └── festival.rs # 节日计算模块
├── examples/ # 示例代码
│ ├── eph_calc.rs # 天文历法计算示例
│ ├── lunar_date.rs # 农历日期转换示例
│ └── fest_terms.rs # 节日和节气信息示例
感谢许剑伟老师开发的原版寿星天文历,为中国传统历法的研究和应用做出了重要贡献。本项目旨在将这些宝贵的算法移植到 Rust 生态系统中,使更多的开发者能够在现代应用中使用这些历法算法。
本项目是对原寿星天文历的移植,遵循原项目的开源精神。如在您的软件中使用了本程序的核心算法及数据,建议在您的软件中申明"算法来源于寿星天文历的Rust移植版"。