㈠闰年是如何来的?

闰年(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. Java小知识-----Map 按Key排序和按Value排序

    Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value). 1.按键排序 jdk内置的java.util包下的Tr ...

  2. [Luogu5686] 和积和

    Description 给定两个下标从\(1\)到\(n\)编号的序列 \(a_i,b_i\),定义函数\(S(l,r)(1\le l\le r\le n)\)为: \[\sum_{i=l}^r a_ ...

  3. powerdesiner概念模型转物理模型以及失败的解决方法

    powerdesiner概念模型转物理模型 概念模型转物理模型 关于powerdesinger 出现Entity Attribute code uniqueness解决办法 Entity Attrib ...

  4. CVE-2018-20169漏洞学习

    简介 在4.19.9之前的Linux内核中发现了一个问题.USB子系统在读取与驱动程序/ USB /core/usb.c中的_usb_get_extra_descriptor相关的额外描述符时错误地检 ...

  5. 利用yaml文件管理资源

    利用yaml配置文件管理资源 [root@master ~]# cat nginx-deployment.yaml apiVersion: apps/v1beta2 kind: Deployment ...

  6. 08 nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    一.为什么要用nginx,uwsgi? 1 首先nginx 是对外的服务接口,外部浏览器通过url访问nginx, 2nginx 接收到浏览器发送过来的http请求,将包进行解析,分析url,如果是静 ...

  7. JS常见面试题总结-真实被问到的!

    1.判断数据类型有几种方法 console.log(typeof 'abc') // string console.log(Object.prototype.toString.call('abc')) ...

  8. Mysql 备份数据库方法及when using LOCK TABLES错误解决方法

    可以将以下代码保存为backup.bat,添加计划任务即可. @echo off ,,%" ,%" "D: -uname -pxxxx -P3306 --skip-loc ...

  9. 深入简出mysql--第一部分

    第二章: 1.sql分类 DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段.数据库.表.列.索引等数据库对象的定义. 常用的语句关键字主要包括 ...

  10. 修改MySQL表中自增编号

    alter table 表名 AUTO_INCREMENT = 值 例: