Skip to content

Latest commit

 

History

History
92 lines (66 loc) · 5.73 KB

README.zh.md

File metadata and controls

92 lines (66 loc) · 5.73 KB

中国传统历法 农历 Chinese Calendar

English | 中文

关于 参考 Lofanmi/chinese-calendar-golang 项目源代码。 此库与源库概念和架构差异较大,难以向源库提交 PR,是完全从 0 开发的一个全新的版本,日历数据取自源库,未来考虑也独立出来 单独维护,或者从第三方源库同步更新。

文档参见 Chinese Calendar

功能

  • 公历和中国传统历法,即农历的合历日期表示
  • 公历和中国传统历法日期的相互转换
  • 中国传统历法日历或日期的基本信息和计算,如年的天数,月的天数,闰月信息
  • 日期格式化
  • 中国传统历法中二十四节气的计算和数据
  • 中国传统干支历的日期和时间
  • 中国传统历法日历的生成
  • 简单支持西方占星术十二星座的判定
  • 中国传统历法中的生肖

名词与对应的英文翻译

  • 使用英文 notation 表示我国传统历法/文化的符号系统
  • 干支 Notation,别名 SexagesimalCycle 意义为传统历法/文化的一种符号系统,由天干和地支组成
  • 天干 Major,别名 CelestialStem 表示传统历法/文化符号系统的主要符号,十天干名采用拼音表示
  • 地支 Minor,别名 TerrestrialBranch 表示传统历法/文化符号系统的次要符号,十二地支名采用拼音表示
  • 生肖 Sign,别名 Symbol, ChineseZodiac 表示传统历法/文化的一种特征/象征/图腾,或某种便于记忆流传的符号
  • 节气 SolarTerm,各节气英文名来自 2022 年冬奥会官方翻译,并将香港天文台英文翻译中不同名的作为别名

相对于源库的变化

  • 从文化和技术层面厘清概念,重新规划了技术架构,对涉及的关键词汇进行了重命名
  • 重构、规范和简化了程序要素
  • 增加了更多适用的函数和方法,便于计算与转换

不足之处

  • 支持的农历日期范围有限,仅支持对应公历公元 1900-2100 年范围内的农历
  • 二十四节气数据仅限公历公元 1904-3000 年范围内
  • 因为我国农历是同时结合太阳和月亮运行规律(其实还包含地球自身的运行)的阴阳历法, 但天体运行规律复杂多样,因此农历的计算结果与实际情况会存在误差,计算结果需要定期校准

农历编排规则

参照 《GB/T 33661-2017 农历的编算和颁行》第 4 节

  1. 以北京时间为标准时间(实际使用时采用服务器本地时区)
  2. 朔日为农历月的第一个农历日
  3. 包含节气冬至在内的农历月为农历十一月
  4. 若从某个农历十一月开始到下一个农历十一月(不含)之间有 13 个农历月,则需要置闰。置闰规则为: 取其中最先出现的一个不包含中气的农历月为农历闰月
  5. 农历十一月之后第 2 个(不计闰月)农历月为农历年的起始月

关于农历

为我国的传统历法,是根据日月实际位置计算的阴阳合历。

以严格的朔望月作为历月,同时用加闰月的办法使历年的平均长度接近于回归年。

农历以月亮朔的时刻所在的日期作为每月的月首,朔望月长约 29 天半,因此有的月份 29 天,叫做月小,有的月份 30 天,叫做月大。 农历平年一年 12 个月共 354 天左右,与回归年差 11 天左右,每隔二三年安插一个闰月,有闰月的年份一年十三个月共 384 天左右 (可见闰月固定为 30 天)。

如何设置闰月,是根据 24 节气来确定的。24 节气为农历中所特有,反映的是太阳在天球上的视位置,属于阳历范畴。太阳在天球上 沿着黄道作周年视运动,以春分点为零点起算,每移动黄经 15° 叫做一气,一年共有 24 气。下表列出了 24 节气的名称以及相应的太阳的 视黄经、在公历年里对应的大致日期,表中顺序逢单的叫做节气,逢双的叫做中气,统称为节气。

农历月份的编排和命名规则为:包含冬至在内的农历月固定为农历十一月;如果从某个农历十一月开始到下一个农历十一月(不含) 之间有 13 个农历月,则取其中最先出现的一个不包含中气的农历月为农历闰月;农历十一月之后第 2 个(不计闰月)农历月为农历年 的起始月;除闰月外,农历月按照在其农历年中的先后顺序依次命名为正月、二月、三月……十月、十一月、十二月,闰月采用在其前 一个农历月的名称前加“闰”字的方法命名闰某月。

参考

  1. 维基百科:农历
  2. 百度百科:农历
  3. 紫金山天文台历书基本术语简介
  4. 香港天文台历法介绍
  5. 国家标准:GB/T 33661-2017 农历的编算和颁行

间接参考

根据 Lofanmi/chinese-calendar-golang 项目 README 文档 提及所参考的资料来源

  1. 算法系列之十八:用天文方法计算二十四节气(上)
  2. 算法系列之十八:用天文方法计算二十四节气(下)
  3. overtrue/chinese-calendar (PHP)
  4. 1900年至2100年公历、农历互转Js代码 - 晶晶的博客