农历是古代开始用来记录时间的一种重要方法,一直以来受到人们的广泛关注,那么对于闰月怎么算呢?

相信对于这个问题大家也很想知道答案,那么接下来我们就一起来看看吧。

闰月怎么算?

农历年中月以朔望月长度29.5306日为基础,所以大月为30日,小月为29日。

为保证每月的头一天(初一)必须是朔日,就使得大小月的安排不固定,而需要通过严格的观测和计算来确定。

因此,农历中连续两个月是大月或是小月的事是常有的。

甚至还出现过如1990年三、四月是小月,九、十、十一、十二连续四个月是大月的罕见特例。

那么多长时间加一个闰月呢?最好的办法就是求出回归年日数与朔望月的日数的最小公倍数:

我们希望m个回归年的天数与n个朔望月的天数相等,也就是应有等式:

在这个等式中我们不能直接求出m和n,但可以求出它们的比例。

这个比例的近似值分别为:

在这些分式中,分子表示回归年的数目,分母表示朔望月的数目。

例如第六个分数式 表示19个回归年中必须加7个闰月。

19个回归年中加7个闰月的结果比较:

19个回归年=19×365.2422=6939.6018(天)

一个朔望月有29.5306天,235个朔望月=235×29.5306=6939.6910(天)

19个回归年中加7个闰月后,矛盾消除得只差:6939.6910-6939.6018=0.0892(天),即2小时9分多,这已经是够精确的了。

所以,农历就采用了19年加7个闰月的办法,即“十九年七闰法”。

把回归年与农历年很好地协调起来,使农历的元旦(春节)总保持在冬末春初。

古人把235个朔望月称之为“闰周”。

农历置闰的方法可以使农历年的平均长度接近回归年,而农历中的月又有鲜明的月相特征,保持了公历和阴历两全其美的特点。

现在置闰的方法是两个冬至之间,如仅有12个月则不置闰,若有13个月即置闰。

置闰的月从“冬至”开始,当出现第一个没有“中气”的月份,这个月就是闰月,其名称是在前个月的前面加一个“闰”字。

农历闰哪个月,决定于一年中的二十四个节气。

我国农历将二十四个节气分为十二个节气和十二个中气。

二十四节气在农历中的日期是逐月推迟的,于是有的农历月份,中气落在月末,下个月就没有中气。

一般每过两年多就有一个没有中气的月,这正好和需要加闰月的年头相符。

所以农历就规定把没有中气的那个月作为闰月。

为什么会有闰月?

回归年的总长度为365.2422日,朔望月的长度为29.5306日。

十二个朔望月构成农历年,长度为29.5306×12=354.3672日,比回归年少10.88天即将近11天,每个月少0.91天近1天。

依此,如农历年某年春节为大雪纷飞的冬天,第二年的春节就会在季节上提前11天,第16个农历年就会出现在赤日炎炎的夏天。

如按十三个朔望月构成农历年,长度为29.5306×13=383.8978日,比回归年又多出18天多。

如果按上述规定制定历法,就会出现天时与历法不合、时序错乱颠倒的怪现象。

为了克服这一缺点,我们的祖先在天文观测的基础上,找出了“闰月”的办法。

保证农历年的正月到三月为春季,四月到六月为夏季,七月到九月为秋季,十月到十二月为冬季,也同时保证了农历岁首在冬末春初。

c语言确定闰月的步骤,怎么判断是闰月,农历闰月是如何确定的?相关推荐

  1. R语言数据格式转换函数、数据类型判断函数(numeric、character、vector、matrix、data.frame、factor、logical)、R语言数据格式类型转换

    R语言数据格式转换函数.数据类型判断函数(numeric数值.character字符串.vector向量.matrix矩阵.data.frame数据表.factor因子.logical逻辑).R语言数 ...

  2. R语言all函数、any函数判断逻辑向量(logical vector)实战

    R语言all函数.any函数判断逻辑向量(logical vector)实战 目录 R语言all函数.any函数判断逻辑向量(logical vector)实战 #基本语法

  3. c语言中如何用程序判断double型的浮点数能精确到几位小数,C语言中浮点数double/float相等判断...

    #include #include /* fabs */ #ifdef _WIN32 // #include #endif //输出的数值不断递增,即使将10改成10.0,循环也没有中止,为什么? v ...

  4. C语言里if语句变量作为判断条件,C语言教学(九-上)if else判断语句

    原标题:C语言教学(九-上)if else判断语句 今天讲if else判断语句,简单理解就是进行条件判断,如果条件达到则执行if 里或else里的语句.先来看if. if的写法和for差不多,就是不 ...

  5. c 语言程序上机考试系统,计算机二级C语言上机考试操作步骤及流程

    计算机二级C语言上机考试操作步骤及流程 二级C语言上机考试操作步骤 一.进入考试系统 单击桌面上的"考试系统"图标,进入考试启动界面."考试启动界面"如图1所示 ...

  6. 计算机二级c语言考试上机内容,计算机二级c语言上机考试操作步骤及流程

    计算机二级c语言上机考试操作步骤及流程 (11页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 二级 C 语言上机考试操作步骤一.进入考试 ...

  7. 【应用C】C语言实现离散数学合式公式的递归判断

    实现合式公式的递归判断,是大二离散数学老师给我们出的一道编程题,当时也是第一次接触递归,苦思冥想一段时间后写出来了,逻辑应该没多大问题,也测试过一组数据,应该还有BUG,希望有人提醒我,在此分享给各位 ...

  8. C语言_回文字符串的判断

    C语言_回文字符串的判断 程序目的 键盘任意输入一字符串,判断其是否会回文串. 设计思路 由于C语言中,字符串保存与char类型数组中,并且数组为随机存取结构.因此,可以设置前后标记a,b.参数a从0 ...

  9. 使用C语言的七个步骤

    文章目录 使用C语言的七个步骤 一:定义程序目标 二:设计程序 三:编写代码 四:编译 五:运行程序 六:测试和调试程序 七:维护和修改代码 一些需要提醒的地方 编译机制 C编程的基本策略 名词概念解 ...

  10. C语言 输入一个字符,并判断这个字符属于哪一类字符

    C语言 输入一个字符,并判断这个字符属于哪一类字符. #include<stdio.h> int main () {char ch;ch = getchar();putchar(ch);i ...

最新文章

  1. swift实现提示框第三方库:MBProgressHUD
  2. 如何提高做事效率,达成目标协作?
  3. ML顶会论文都可复现吗?来挑战一下,还能拿500美元补贴
  4. 云计算服务在小企业中的意义如何?
  5. linux rar安装
  6. 职场中不要问程序员这五类问题
  7. 给老板做PPT必备:文字加拼音
  8. java中使用配置文件_Java中使用Properties配置文件的简单方法
  9. 三星Galaxy Note 10系列机模曝光:开孔全面屏实锤
  10. hutool的定时任务不支持依赖注入怎么办_可调度定时任务在SpringBoot中的实践
  11. (一)UI设计的一些常识
  12. Java基础编程题50道题
  13. linux 支持的中文字体,Linux 增加中文字体支持
  14. 工具推荐:最好用的pCap工具
  15. REUSE_ALV_GRID_DISPLAY_LVC
  16. SMB v1远程代码执行漏洞(CVE-2020-1301)复现
  17. git 冲突解决一把梭
  18. JavaWeb专栏之(一):什么是JavaWeb?
  19. RISCV-RoCC简介
  20. android ndk neon,Android NDK开发之 NEON使用介绍

热门文章

  1. php微信实现线下收银扫码枪扫码支付微信支付
  2. 【Microsoft Azure 的1024种玩法】三十四.将本地数据文件快速迁移到Azure Blob云存储最佳实践
  3. 机器学习8-误差逆传播算法BP的认识
  4. Java对接支付宝的支付、退款、提现
  5. 汇编语言--在屏幕上显示名字
  6. 外包的水有多深?华为18k的外包测试岗能去吗?
  7. Java小例子—薪水计算器(含具体的代码思路)
  8. 逃离北上广?别闹了!
  9. 计算机网络原理笔记精整理(汇总)
  10. excel数据分析 - 10个清洗文本类函数