当前位置:首页 > JavaScript

js 实现干支

2026-02-02 06:20:49JavaScript

干支纪年计算方法

干支纪年由天干(10个)和地支(12个)组成,60年一个循环。天干地支的组合顺序固定,已知某一年的干支,可推算其他年份。

天干序列:甲、乙、丙、丁、戊、己、庚、辛、壬、癸
地支序列:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥

实现步骤

确定一个基准年份,如2020年为庚子年。计算目标年份与基准年份的差值,用天干地支的总数取模得到索引。

天干计算:(year - baseYear) % 10
地支计算:(year - baseYear) % 12
结果需处理负数的模运算。

JavaScript 实现代码

function getGanzhiYear(year) {
  const BASE_YEAR = 2020; // 基准年份:庚子年
  const tiangan = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'];
  const dizhi = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'];

  // 处理模运算的负数情况
  const mod = (n, m) => ((n % m) + m) % m;

  const diff = year - BASE_YEAR;
  const tgIndex = mod(diff, 10);
  const dzIndex = mod(diff, 12);

  return tiangan[tgIndex] + dizhi[dzIndex];
}

// 示例用法
console.log(getGanzhiYear(2023)); // 输出:癸卯
console.log(getGanzhiYear(2000)); // 输出:庚辰

扩展说明

该方法适用于公元后的年份计算。如需支持公元前年份,需调整基准年份和模运算逻辑。干支纪月、纪日逻辑类似,但基准点不同。

对于更复杂的农历日期计算,建议使用现成的库如lunar.jschinese-lunar,它们已处理节气、闰月等规则。

js 实现干支

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

相关文章

js实现轮播

js实现轮播

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

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounc…