㈠闰年是如何来的?

闰年(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. sqlalchemy orm的cascade的参数

    #encoding: utf-8 from sqlalchemy import create_engine,Column,Integer,String,Float,func,and_,or_,Text ...

  2. python smtplib server not connect

    最近发现用smtplib发邮件一直发送不成功,使用debug发现前面都正常,但是DATA发送直接被smtp服务器直接断开.smtp服务器显示body丢失. 后来发现是我加了附件,有指定文件类型: at ...

  3. Oracle密码过期(the password has expired)

    1.进入sqlplus模式--sqlplus / as sysdba; 2.查看用户密码的有效期设置(一般默认的配置文件是DEFAULT) SELECT * FROM dba_profiles WHE ...

  4. PostgreSQL的同步级别与MySQL的半同步after_sync比较

    MySQL的半同步中通过binlog进行流复制,同步级别和PostgreSQL对比可以发现: PostgreSQL                MySQL off local            ...

  5. 如何在java中去除中文文本的停用词

    1.  整体思路 第一步:先将中文文本进行分词,这里使用的HanLP-汉语言处理包进行中文文本分词. 第二步:使用停用词表,去除分好的词中的停用词. 2.  中文文本分词环境配置 使用的HanLP-汉 ...

  6. Spring实现构造注入

    Spring通过setter访问器实现对属性的赋值,这种做法称为设值注入:Spring还提供了通过构造方法赋值的能力,称为构造注入.使用设值注入时,Spring通过JavaBean的无参构造方法实例化 ...

  7. AppCan全局搜索

    Ctrl + H,在项目中全局搜索英文和中文

  8. Laravel-admin form 表单是增加或者修改

    Laravel-admin 实现 form 表单是增加或者修改的三种方法,应用情景:1.新增或者修改 form 展示的表单不同:2.新增或者保存前后回调进行其他的操作 1. use Illuminat ...

  9. 从入门到自闭之Python自定义模块

    自定义模块 定义:一个文件就是一个模块(能被调用的文件,模块就是一个工具箱,工具就是函数) 作用: 将代码文家化管理,提高可读性,避免重复代码 拿来就用(避免重复造轮子),python中类库比较多,提 ...

  10. 客户端相关知识学习(一)之混合开发,为什么要在App中使用H5页面以及应用场景、注意事项

    混合开发 随着移动互联网的高速发展,常规的开发速度已经渐渐不能满足市场需求.原生H5混合开发应运而生,目前,市场上许多主流应用都有用到混合开发,例如支付宝.美团等.下面,结合我本人的开发经验,简单谈一 ...