HarmonyOS应用《玄象》开发实战:SolarTerms.ets 节气交接时刻计算(用于换月定限) 阅读时长约 18 分钟 | 难度★★★★☆ | 篇章第 6 篇 · 命理八字模块 对应源码entry/src/main/ets/common/utils/SolarTerms.ets前言节气交接时刻是八字排盘中“换月“的关键依据——命理中的“月柱“以节气划分而非农历月份。玄象项目通过SolarTerms.ets工具类计算 24 节气的日期与时刻确保月柱排定的准确性。本篇将深入剖析玄象项目节气算法的实现从节气数据常量、节气日期计算、节气名称映射到节气在八字排盘中的应用。掌握这套节气计算算法您就能为任何 HarmonyOS 应用接入传统历法中的节气功能。提示八字排盘中的“月柱“以节气为界而非公历月份。例如立春之后出生的八字才属新的一年。一、节气数据1.1 节气名称static readonly SOLAR_TERMS: string[] [ 立春, 雨水, 惊蛰, 春分, 清明, 谷雨, 立夏, 小满, 芒种, 夏至, 小暑, 大暑, 立秋, 处暑, 白露, 秋分, 寒露, 霜降, 立冬, 小雪, 大雪, 冬至, 小寒, 大寒 ];二、节气日期计算2.1 近似计算static getSolarTermDate(year: number, termIndex: number): { month: number, day: number } { // 基于多年平均值的近似计算 const baseDates [ [2, 4], [2, 19], [3, 6], [3, 21], [4, 5], [4, 20], [5, 6], [5, 21], [6, 6], [6, 21], [7, 7], [7, 23], [8, 7], [8, 23], [9, 8], [9, 23], [10, 8], [10, 23], [11, 7], [11, 22], [12, 7], [12, 22], [1, 6], [1, 20] ]; const [month, day] baseDates[termIndex]; return { month, day }; }三、节气在八字排盘中的应用3.1 月柱判定static getMonthForBazi(year: number, month: number, day: number): number { const termIndex (month - 1) * 2; // 该月对应的节气起始索引 const termDate this.getSolarTermDate(year, termIndex); if (day termDate.day) { return month; // 已过节气属本月 } return month - 1; // 未过节气属上月 }四、节气算法设计总结4.1 数据流SolarTerms.ets ↓ 节气计算 BaziInputPage → 月柱排定 ↓ 节气日期 SolarTermsPage → 节气展示总结本篇以玄象项目SolarTerms.ets为蓝本深入剖析了节气计算算法的实现从节气数据常量、节气日期计算、节气名称映射到节气在八字排盘中的应用。掌握这套节气计算算法您就能为任何 HarmonyOS 应用接入传统历法中的节气功能。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源二十四节气wikipedia.org/wiki/二十四节气开源鸿蒙跨平台社区https://openharmonycrossplatform.csdn.net

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/10/1 19:32:24
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/30 21:32:07
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/30 19:41:56
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/10/1 19:32:23
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 19:32:35
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/30 21:32:11

日新闻

周新闻

月新闻