㈠闰年是如何来的?

闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。补上时间差的年份为闰年。

㈡什么是闰年?

凡阳历中有闰日(二月为二十九日)的年,或阴历中有闰月(一年有十三个月)的年;闰余(岁余置闰。阴历每年与回归年相比所差的时日)。

闰年共有366天(1-12月分别为31天,29天,31天,30天,31天,30天,31天,31天,30天,31天,30天,31天)。

㈢闰年分类

⑴平年为365天,闰年为366天

⑵闰年是公历中的名词。闰年分为普通闰年和世纪闰年。

⑶普通闰年:公历年份是4的倍数的,一般是闰年。

⑷世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年。

㈣简洁判断闰年的方法

★按一回归年365天5小时48分45.5秒。

⑴普通年能被4整除且不能被100整除的为闰年。(如2004年就是闰年,1901年不是闰年)

⑵世纪年能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)

⑶对于数值很大的年份,这年如果能整除3200一般不是闰年,但是如果能整除172800则是闰年。

如172800年是闰年,86400年不是闰年(因为虽然能整除3200,但不能整除172800)(此按一回归年365天5h48'45.5''计算)。

㈤闰年与闰月

⑴闰年(公历中名词)和闰月(农历中名词)并没有直接的关联。
⑵公历中只分闰年和平年,平年有365天,而闰年有366天(2月中多一天);
⑶平年中也可能有闰月(如2017年是平年,农历有闰月,闰6月)。
 

㈥阳历闰年

⑴阳历闰年共有366天(1-12月分别为31天,29天,31天,30天,31天,30天,31天,31天,30天,31天,30天,31天),

⑵地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year)。公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为四年累计一天,故四年于2月加1天,使当年的历年长度为366日,这一年就为闰年。现行公历中每400年有97个闰年。

⑶按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来,因此,每四百年中要减少三个闰年。所以规定,公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的,虽然是4的倍数,也是平年,这就是通常所说的: 四年一闰,百年不闰,四百年再闰。 例如,2000年是闰年,1900年则是平年。

㈦公历闰年

⑴农历闰年由于比平年(354天)多一个月,所以实际上为383天或者384天(具体闰哪个月是由节气情况决定的)。

⑵中国旧历农历作为阴阳历的一种,每月的天数依照月亏而定,一年的时间以12个月为基准,平年比一回归年少约11天。为了合上地球围绕太阳运行周期即回归年,每隔2到4年,增加一个月,增加的这个月为闰月。闰月加到哪个月,以农历历法规则推断,主要依照与农历的二十四节气相符合来确定。在加有闰月的那一年有13个月,历年长度为384或385日,这一年也称为闰年。如1984年鼠年的农历中,有两个十月,通常成为前十月和后十月(即闰月)。农历闰年闰月的推算,3年一闰,5年二闰,19年七闰;农历基本上19年为一周期对应于公历同一时间。如公历的2001年5月27日、1982年5月27日和1963年5月27日这个日子,都是闰四月初五。

⑶农历(即中国的阴历)的历月是以朔望月为依据的。朔望月的时间是29日12小时44分3秒(即29.5366日),因此农历是大月30天,小月29天。农历是基本上以12个月作为一年的,但12个朔望月的时间是354.3667日,和回归年比起来要相差11天左右。这样每隔3年就要多出33天,即大约多出一个多月。 为了要把多余的日数消除,每隔3年就要加一个月,这就是农历的闰月。有闰月的一年也叫闰年,所以民间又有“三年两闰,三年两不闰”的说法。所以农历的闰年就有13个月了。至于闰哪个月是由节气情况决定的。

㈧计算方法

☀文字叙述

⑴按一回归年365天5h48'45.5''计算

⑵一年日数必须是整数,不便将零时数计入,所以取365天为一年,则余5时48分46秒 

⑶积至4年约满一 日,所以4年一“闰日”,谓之“闰年”,无“闰日”之年为平年,即平年365天,闰年366天

⑷但到4年之时,仅有23时15分4秒闰一日。       但是欠缺44分56秒

⑸积至100年(25闰)时就欠缺18时43分20秒,约合3 / 4日,所以满100年不闰

⑹此时又余5时16分40秒,积至400年余21时6分40秒又闰

⑺又欠缺2时53分20秒,积至3200年计欠缺23时6分40秒,所以满3200年不闰

⑻此时又余53分20秒,积至86400年刚好24 时又一闰,这是不余不欠。

所以:判定公历闰年应遵循的一般规律为:四年一闰,百年不闰,四百年再闰.

★数学公式计算

一个回归年,H=(365*24*3600+5*3600+48*60+46)秒=31556926秒=15778463*2秒
 
1天 D=86400秒=43200*2秒
 
一个回归年=H/D天=15778463*2/(43200*2)天=365.2421990740740740740740740740....天
 
4年一闰:365*4+1=1461天=15778800/10800天
 
4个回归年为(15778463/43200)*4=15778463/10800天
 
4年一闰,公历比回归年时间多337/10800天
 
增加百年不闰400年再闰规则后:
 
400个公历年天数为365*400+97=146097天=15778476/108天
 
400个回归年为(15778463/43200)*400=15778463/108天
 
公历比回归年时间多13/108天
 
增加3200年不闰规则后:
 
3200个公历年天数为365*3200+97*(3200/400)-1=1168775天=31556925/27天
 
3200个回归年为15778463*3200/43200=15778463*32/432=31556926/27天
 
公历比回归年时间少1/27天
 
增加86400年再闰规则后:
 
86400个公历年天数为365*86400+(97*8-1)*(86400/3200)+1=365*86400+775*27+1=31556926=852037002/27天
 
86400个回归年为15778463*86400/43200=15778463*864/432=15778463*54/27=852037002/27天
 
公历比回归年时间少0天
 
结论:一天定义24小时即86400秒,需要86400年一个循环才能消除公历和回归年时间差。
 
 
㈨JavaScript 语言计算
function isLeapYear(year){
if((year/4==Math.floor(year/4)&&year/100!=Math.floor(year/100))||(year/400==Math.floor(year/400)&&year/3200!=Math.floor(year/3200))||year/172800==Math.floor(year/172800)){
return true
}
return false
}

闰年计算——JavaScript 语言计算的更多相关文章

  1. 关于JavaScript中计算精度丢失的问题

    摘要: 由于计算机是用二进制来存储和处理数字,不能精确表示浮点数,而JavaScript中没有相应的封装类来处理浮点数运算,直接计算会导致运算精度丢失. 为了避免产生精度差异,把需要计算的数字升级(乘 ...

  2. 如何保证javascript算数计算结果的精度

    前言: 我们先看如下这个js的代数计算结果,什么? 明显不是我们想要的结果3.52!! 备注:其实这个小数计算精度问题,在弱类型语言python等语言中同样存在. 问题原因之所在: JavaScrip ...

  3. C语言计算两个日期间隔天数

    在网上看到了一个C语言计算日期间隔的方法,咋一看很高深,仔细看更高神,很巧妙. 先直接代码吧 #include <stdio.h> #include <stdlib.h> in ...

  4. 0.1+0.2不等于0.3,微信小程序云开发如何解决JavaScript小数计算精度失准的问题

    先看图 这个是JavaScript语言自身存在的一个问题.说道这里不得不提一下网上流传的JavaScript搞笑图 我们在使用云开发来开发微信小程序的时候,会经常遇到JavaScript小数计算精度失 ...

  5. R语言计算moran‘I

    R语言计算moran‘I install.packages("maptools")#画地图的包 install.packages("spdep")#空间统计,m ...

  6. R语言计算相关矩阵然后将计算结果输出到CSV文件

    R语言计算出一个N个属性的相关矩阵(),然后再将相关矩阵输出到CSV文件. 读入的数据文件格式如下图所示: R程序采用如下语句: data<-read.csv("I:\\SB\land ...

  7. Javascript时间差计算函数代码实例

    Javascript时间差计算函数代码实例 <script language="javascript"> Date.prototype.dateDiff = funct ...

  8. R语言计算IV值

    更多大数据分析.建模等内容请关注公众号<bigdatamodeling> 在对变量分箱后,需要计算变量的重要性,IV是评估变量区分度或重要性的统计量之一,R语言计算IV值的代码如下: Ca ...

  9. [转帖]C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义

    C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义 https://blog.csdn.net/willyang519/article/d ...

随机推荐

  1. (已解决)Could not open '/var/lib/nova/mnt/*/volume-*': Permission denied

    [问题描述] 创建boot_from_volume的虚机时,磁盘后端为NFS,创建失败. [错误日志] nova-compute模块 Could not open '/var/lib/nova/mnt ...

  2. windows10专业版激活

    [1]右击我的电脑->属性,查看激活情况 [2]管理员身份打开CMD [2.1]如果不知道CMD是什么东西 [2.2]如果上面那个也找不到,直接按windows键(就是ctrl和alt中间那个键 ...

  3. 设计模式:职责链模式(Chain of Responsibility)

    去年参加校招要到长沙来,这个对于我来说不是特别喜欢(但又必须的来,谁叫咱不是985.211的娃呢),但是对于某些人来说就是福音了.大四还有课,而且学校抓的比较严,所以对于那些想翘课的人来说这个是最好不 ...

  4. P3376 网络流-最大流模板题(Dinic+当前弧优化)

    (点击此处查看原题) Dinic算法 Dinic算法相对于EK算法,主要区别在于Dinic算法对图实现了分层,使得我们可以用一次bfs,一次dfs使得多条增广路得到增广 普通的Dinic算法已经可以处 ...

  5. jinja2 模板相关

    安装 pip install jinja2 配置模板 settings.py 60行左右 TEMPLATES = [ { 'BACKEND': 'django.template.backends.dj ...

  6. Android开发build出现java.lang.NumberFormatException: For input string: "tle 0x7f0800aa"错误的解决方案

    查看异常栈没有发现项目代码的问题,因为问题是出现在layout文件中. 全局查找tle这个,发现在某个layout文件中title一词被变成ti tle了,结果Android就xjb报错了. 参考

  7. 删除链表中重复的结点——牛客剑指offer

    题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理 ...

  8. 最新省市区地区数据sql版本(2019年1月)

    版本 统计标准2017版 来源 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/ 建表 CREATE TABLE `area` ( `id` varc ...

  9. leecode刷题(28)-- 二叉树的前序遍历

    leecode刷题(28)-- 二叉树的前序遍历 二叉树的前序遍历 给定一个二叉树,返回它的 前序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 思路 ...

  10. Java版本及历史简述

    Java版本及历史简述 初学Java,对于Java那么多版本很困惑,这里做一点笔记,如有错误希望指出. Java由Sun公司创造,后Sun公司被Oracle公司收购,Java也随之变为Oracle的产 ...