轻量、离线的黄历内容库,用于日历、桌面小工具等民俗展示。不提供严格择日,不对现实事件作吉凶预测。
核心使用 time.ganzhi、time.sun、time.julianDay 和静态数据,均为纯 aardio。不运行 JS,不访问网络,不加载 .NET。若还要显示“正月初一”等农历日期,按需另外导入 time.lunar 即可。
import time.almanac;
var day,err = time.almanac.getDay("2024-06-26");
if(!day){
print(err);
return;
}
print(day.date, day.day.name, day.duty ++ "日");
print("宜:", string.join(day.yi,"、"));
print("忌:", string.join(day.ji,"、"));
print("值神:", day.twelveStar, day.ecliptic);
print("冲" ++ day.clash ++ ",煞" ++ day.sha);
也可以创建一个日黄历对象,字段与 getDay 相同,并提供 getHours() 方法:
import time.almanac;
var day = time.almanac("2024-06-26");
print(day.yi);
var hours = day.getHours();
print(#hours); // 13
import time.almanac;
import time.lunar;
var lunar = time.lunar("2033-12-22");
var day = time.almanac.getDay(lunar);
print(tostring(lunar));
print(day.date, day.yi, day.ji);
time.lunar 使用系统 .NET 组件,属于可选的农历日期层,不是黄历核心的依赖。其日期范围与本库不完全相同:time.lunar 从 1901-02-19 开始,而本库从 1901-01-01 开始。
| 项目 | 约定 |
|---|---|
| 输入与范围 | 公历 1901-01-01 至 2100-12-31;墙钟字段按北京时间理解 |
| 日黄历月界 | 节气月,在交节当天整日切换 |
| 日黄历年界 | 立春当天整日切换;不是农历春节年界 |
| 日黄历日界 | 0 点换日,日黄历不受输入时分秒影响 |
| 时辰宜忌 | 23 点按次日日干支查表,与 time.ganzhi 时柱口径一致 |
| 全日时辰 | 按公历当天返回 13 段,早子、晚子分别列出 |
| 空宜忌 | 保留空数组;不擅自填为“诸事不宜”或“无忌” |
| 黄道标识 | isLucky 只表示十二值神分类,不代表宜忌综合评分 |
本库不自动换算真太阳时或调整时区。跨时区程序应先准备好北京时间字段,再传入。数值时间戳由 time 按系统本地时区解析,因此非北京时间系统更适合传入明确的北京时间字符串或字段表。
民俗体系中可能出现“宜”与彭祖百忌互相矛盾、黄道日仍有忌事项等情况。本库不强行合并或消解这些词条。
首次查询一个公历年时计算并缓存节气与月柱;每线程最多缓存 8 年。查询结果是独立快照,修改返回数组或干支字段不会影响后续查询。