当前位置:首页 > JavaScript

js 实现干支

2026-03-15 06:07:49JavaScript

干支纪年法的基本概念

干支纪年法是中国传统的纪年方式,由天干(10个)和地支(12个)组合而成,共60种组合,称为一个甲子循环。天干包括:甲、乙、丙、丁、戊、己、庚、辛、壬、癸;地支包括:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。

js 实现干支

干支计算的核心逻辑

干支纪年与公历年份的换算需注意:干支纪年以农历立春为分界,但通常简化处理为按公历年份计算。核心公式为:

js 实现干支

  • 天干序号 = (年份 - 4) % 10(结果小于0时加10)
  • 地支序号 = (年份 - 4) % 12(结果小于0时加12)

JavaScript实现代码

function getChineseEraYear(year) {
    const heavenlyStems = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'];
    const earthlyBranches = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'];

    // 处理公元前年份(需验证历史准确性)
    const baseYear = year >= 0 ? year : year + 1;

    const stemIndex = (baseYear - 4) % 10;
    const branchIndex = (baseYear - 4) % 12;

    return {
        heavenlyStem: heavenlyStems[stemIndex >= 0 ? stemIndex : stemIndex + 10],
        earthlyBranch: earthlyBranches[branchIndex >= 0 ? branchIndex : branchIndex + 12],
        fullName: heavenlyStems[stemIndex >= 0 ? stemIndex : stemIndex + 10] + 
                 earthlyBranches[branchIndex >= 0 ? branchIndex : branchIndex + 12]
    };
}

// 示例:获取2023年干支
console.log(getChineseEraYear(2023)); // 输出:{ heavenlyStem: '癸', earthlyBranch: '卯', fullName: '癸卯' }

边界情况处理

  1. 公元前年份:需注意公元无0年,公元前1年之后是公元1年。
  2. 年份验证:可添加参数校验确保输入为整数。
  3. 立春分界:精确计算需结合农历日期,上述代码采用简化处理。

扩展功能

若需计算月、日、时的干支(八字),需引入农历转换库(如lunar.js)和时辰计算。时辰地支固定对应现代时间:

  • 子时:23:00-1:00
  • 丑时:1:00-3:00
  • ...
  • 亥时:21:00-23:00

注意事项

干支纪年与公历并非严格对应,重大历史事件研究时应参考专业历法工具。此实现适用于一般场景的快速换算需求。

标签: 干支js
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js 实现图片轮播

js 实现图片轮播

基础实现方案 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS负责样式布局,JavaScript处理轮播逻辑。 <div class="…