闰年二月有几天?
闰年二月有29天,平年有28天,闰年共有366天(1-12月分别为31天,29天,31天,30天,31天,30天,31天,31天,30天,31天,30天,31天).历史上也曾出现过2月30日.
闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的.补上时间差的年份为闰年.
现行公历中每400年有97个闰年.按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来.因此每四百年中要减少三个闰年.所以公历规定:年份是整百数时,必须是400的倍数才是闰年;不是400的倍数的世纪年,即使是4的倍数也不是闰年.
扩展资料
2月30日
瑞典历21现过一次2月30日.瑞典帝国曾计划以忽略1700年开始往后40年的闰日,而非如其他国家般忽略儒略历中若干个连续日的方法,将历法从儒略历改成格里历,故而1700年在瑞典并非闰年.
不过在同年较后时间,大北方战争爆发,使瑞典无暇顾及历法,结果1704年和1708年的闰日未被忽略,成为闰年.
为避免历法混乱和错误,瑞典在1712年恢复使用儒略历,并在2月加入一个额外闰日,使当年2月30日成为世界上已知惟一实际上出现的公元2月30日.当日对应儒略历2月29日和格里历3月11日.
参考资料来源:搜狗百科——二月
2月为什么没有30日?简单的
这是古罗马在制定日历时,起初设想月份的单数为31天,双数为30天.但这样一年是366天,比365天多出一天,必须从12个月中抠出一天.因为在古罗马,执行死刑都在2月份,所以都认为这个月不吉利,那就从2月中抠出一天,成了29天.当时一罗马大帝出生在有30天的8月,比上一任出生在有31天的7月的大帝少一天.他就又从2月份中抠出一天,加到8月份.从此阳历的2月就成了28天,本应是30天的8月份成了31天.
旧历2月30日与新历3月23日为同一天的年份有哪些
在1900年到2200年范围内,公历3月23日与农历二月三十同一天的年份如下:
1955年3月23日 二月(大)三十 星期三 干支:乙未年 己卯月 癸未日
1974年3月23日 二月(大)三十 星期六 干支:甲寅年 丁卯月 癸亥日
2020年3月23日 二月(大)三十 星期一 干支:庚子年 己卯月 乙丑日
2126年3月23日 二月(大)三十 星期六 干支:丙戌年 辛卯月 庚辰日
2183年3月23日 二月(大)三十 星期日 干支:癸未年 乙卯月 己卯日
为什么二月没有30号
因为地球公转一周360度,所需要的时间为365个昼日外加6小时9分钟10秒
季节大致也就轮回1次
所以自古人们就定义1年是365天
水星公转一周为地球上的68天;
金星公转一周为地球上的225天;
火星上1年约等于地球上两年,
木星上1年约等于地球上12年;
土星上1年约等于地球上29年;
天王星上1年约等于地球上84年;
海王星上1年约等于地球上165年;
离太阳最远的冥王星绕太阳一周需要地球上的248年.
并不是这么简单,现行的公历是格利戈里历法,这个历法的是1582年教皇格利戈里根据恺撒大帝引进的算法改进的.它采用的是闰年制也就是现行的制度,不过有一个需要注意的地方就是,这个历法并不是连续的,中间缺少了11天.1752年9月2日之后的那一天并不是1752年9月3日,而是1752年9月14日.也就是说,从1752年9月3日到1752年9月13日的11天并不存在.抹掉这11天是由英国议会做出的决定.所以要计算某年每个月的天数的,除了要考虑是否是闰年以外,还要考虑1752年的9月.
><
7⊥.html
-------------------------
公元元年的第一天,也就是公元1年1月1日.具体:公元1年1月1日是星期六.
---------------------
太阳历又称为阳历,是以地球绕太阳公转的运动周期为基础而制定的历法.太阳历的历年近似等于回归年,一年12个月,这个"月",实际上与朔望月无关.阳历的月份、日期都与太阳在黄道上的位置较好地符合,根据阳历的日期,在一年中可以明显看出四季寒暖变化的情况;但在每个月份中,看不出月亮的朔、望、两弦.
如今世界通行的公历就是一种阳历,平年365天,闰年366天,每四年一闰,每满百年少闰一次,到第四百年再闰,即每四百年中有97个闰年.公历的历年平均长度与回归年只有26秒之差,要累积3300年才差一日.
现行公历的产生、变化和发展
目前通行世界的公历,是我们大家最熟悉的一种阳历.这部历法浸透了人类几千年间所创造的文明,是古罗马人向埃及人学得,并随着罗马帝国的扩张和基督教的兴起而传播于世界各地.
公历最早的源头,可以追溯到古埃及的太阳历.尼罗河是埃及的命根子,正是由于计算尼罗河泛滥周期的需要,产生了古埃及的天文学和太阳历.七千年前,他们观察到,天狼星第一次和太阳同时升起的那一天之后,再过五、六十天,尼罗河就开始泛滥,于是他们就以这一天作为一年的开始,推算起来,这一天是7月19日. 最初一年定为360天,后来改为365天.这就是世界上第一个太阳历.后来他们又根据尼罗河泛滥和农业生产的情况,把一年分为三季,叫做洪水季、冬季和夏季.每季4个月,每月30天,每月里10天一大周,五天一小周.全年12个月,另加5天在年尾,为年终祭祀日.
这种以365天为一年的历年,是由于观测天狼星定出来的,叫天狼星年. 它和回归年相差约0.25天,因而在日历上每年的开始时间越来越早,经过1461个历年,各个日期再次与原来的季节吻合,以后又逐渐脱离.看起来,天狼星年好象在回归年周期左右徘徊,因而又叫它为徘徊年、游移年,1461年的循环周期被称为天狼周期.
后来,埃及人通过天文观测,发现年的真正周期是365.25日,但僧侣们为了使埃及的节日能与祭神会同时举行,以维护宗教的"神圣"地位,宁愿保持游移年.后来出土了一块石碑,上面有用埃及文和希腊文所写的碑文,记载了欧吉德皇帝在公元前238年发布的一道命令: 每经过四年,在第四年的年末五天祭祀日之后、下一年元旦之前,再加一天,并在这天举行欧吉德皇帝的节日庆祝会,以便让大家记住.欧吉德皇帝校正了以前历法的缺陷,这增加一天的年叫定年,其它年叫不定年.
古罗马人使用的历法经历了从太阴历到阴阳历、阳历的发展过程.罗马古时是意大利的一个小村,罗马人先是统一了意大利,而后又成为地跨欧、亚、非三洲的大帝国.最早,古罗马历全年10个月,有的历月30天,有的历月29天(这十分类似太阴历),还有70几天是年末休息日.罗马城第一个国王罗慕洛时期,各月有了名称,还排了次序.全年10个月,有的月30天,有的月31天,共304天,另外60几天是年末休息日.以罗马城建立的那一年,即公元前753年作为元年,这就是罗马纪元.某些欧洲历史学家直到17世纪末还使用这个纪年来记载历史事件.
第二个国王努马,参照希腊历法进行了改革,增加了第十一月和第十二月,同时调整各月的天数,改为1、3、5、8四个月每月31天,2、4、6、7、9、10、11七个月每月29天, 12月最短,只有28天.根据那时罗马的习惯,双数不吉祥,于是就在这个月里处决一年中所有的死刑犯.这样,历年为355天,比回归年少10多天. 为了纠正日期与季节逐年脱离的偏差,就在每四年中增加两个补充月,第一个补充月22天,加在第二年里,另一个23天加在第四年里,所增加的天数放在第十二月的24日与25日之间.这实际上就是阴阳历了,历年平均长度为366.25天,同时用增加或减少补充月的办法来补救历法与天时不和的缺点.但这样却更增加了混乱:月份随意流转.比如,掌管历法的大祭司长在自己的朋友执政的年份,就硬插进一个月,而当是仇人执政,就减少补充月,来缩短其任期.民间契约的执行也受到影响,祭祀节与斋戒日都在逐渐移动,本该夏天的收获节竟跑到了冬天举行.
当儒略·凯撒第三次任执政官时,指定以埃及天文学家索西琴尼为首的一批天文学家制定新历,这就是儒略历.
儒略历的主要内容是:每隔三年设一闰年,平年365天,闰年366天,历年平均长度为365.25日.以原先的第十一月1日为一年的开始,这样,罗马执政官上任时就恰值元旦. 儒略历每年分12个月,第1、3、5、7、9、11月是大月,大月每月31天.第4、6、8、10、12月为小月,小月每月30天.第二月(即原先的第十二月)在平年是29天,闰年30天,虽然月序不同于改历前,可是仍然保留着原来的特点,是一年中最短的月份.
儒略历从罗马纪元709年,即公元前45年1月1日开始实行. 这一年,为了弥补罗马历与太阳年的年差,除了355天的历年和一个23天的附加月外, 又插进两个月,其中一个月为33天,另一个月为34天.这样,这一年就有355+23+33+34=445天.这就是历史上所称的"乱年".
西方历法从儒略历实施开始,终于走上正轨.滑稽的是,那些颁发历书的祭司们,有本事从乌鸦的争斗预卜吉凶,却把改历命令中的"每隔三年设一闰年"误解为"每三年设一闰年".这个错误直到公元前9年才由奥古斯都下令改正过来.
"奥古斯都"是神圣、庄严、崇高的意思.在古罗马,这个尊号过去只是在举行宗教仪式上才授予的.在公元前27年,元老院把它授给了屋大维.他是儒略·凯撒姐姐的儿子,是凯撒遗嘱的第一继承人.
想当年,伟大的凯撒大帝南征北战,东讨西伐,雄才大略,不可一世,后来更成为事实上的独裁者.树大招风,遭到许多人嫉妒.公元前44年,当凯撒意图公开称帝时,却在元老院的议事厅遭到刺杀.此时屋大维还不满20岁,但他却颇具智力和手腕,逐渐积蓄力量,到公元前30年,击败所有对手,成了罗马"第一公民".屋大维实际上就是唯一具有无限权力的统治者,他结束了罗马共和时期.因此,历史上把从公元前27年开始的罗马,称为罗马帝国.
当奥古斯都准备改正闰年错误时,已经多闰了三次,于是他下令从公元前8年到公元4年停止闰年,即公元前5年、公元前1年和公元4年仍是平年,以后又恢复为每四年一闰了. 为了纪念他的这一功绩,罗马元老院通过决议,把儒略历的第八月改称为"Augustus",即奥古斯都月,因为他在这个月里曾取得过巨大的军事胜利.但这个月是小月,未免有点逊色,何况罗马人以单数为吉,而30天却是个双数,于是就从2月份拿出一天,加到奥古斯都月里,8月就31天了,可怜的2月在平年只有28天,碰上四年一次的闰年也不过29天.7、8、9月连续三个月都是大月,看起来很不顺眼,使用也不方便, 就把9月改为30天,10月为31天,11月为30天,12月为31天.这样,大小月相间的规律破坏了,一直到两千年后的今天还受到影响.
奥古斯都修改过的历法格式与现行公历一模一样了,但它的纪元,即计算年代的起算点还不是公元元年,它的闰年方法与现行公历还不完全一致.这两点差别与基督教的起源和发展有密切的关系.
基督教产生于公元一世纪的巴勒斯坦,"基督"一词是古希腊语的译音,意为"救世主".传说基督教的创始人是耶稣,他作为救世主,许诺穷人死后升入天堂,而富人要进入天堂比骆驼穿过针眼还难.由于拨动了社会下层人民的心弦,基督教逐渐传播开来,引起罗马统治者不安,在提庇留皇帝时代,罗马派驻犹太的总督,将耶稣钉死在十字架上.但是第三天,耶稣从坟墓中复活过来,并升了天,他将来还要对所有的死人、活人施行末日审判.后来,基督教徒把这些传说和耶稣言行记录下来,编写了《新约圣经》.
早期的基督教,因为打破了罗马帝国的神权统治,而多次遭到镇压.后来,罗马帝国日渐衰落,奴隶制日趋瓦解,原来的社会上层分子在彷徨中纷纷加入基督教,并逐步控制了它,努力寻求统治者对教会的支持.统治者对教会转而采取怀柔政策,到四世纪末,罗马帝国终于宣布基督教为其国教.
公历的纪元,就是从"耶稣降生"的那年算起的.这与基督教的兴盛密切相关.
此后,儒略历被认为是准确无误的历法, 于是人们把3月21日固定为春分日,却带来了未曾料想到的麻烦.随着时间的推移,人们发觉,真正的春分不再与当时的日历一致,这个昼夜相等的日期越来越早,到16世纪末已提前到3月. 春分逐渐提前,是由于儒略历并非最精确的历法,它的历年平均长度等于365.25日,还是比回归年长了11分14秒,这个差数虽然不大,但累积下去,128年就差一天,400年就差三天多.
为了不违背宗教会议的规定,满足教会对历法的要求,罗马教皇格里高利十三世设立了改革历法的专门委员会,比较了各种方案后, 决定采用意大利医生利里奥的方案,在400年中去掉儒略历多出的三个闰年.
1582年3月1日,格里高利颁发了改历命令,内容是:
一、1582年10月4日后的一天是10月15日,而不是10月5日,但星期序号仍然连续计算,10月4日是星期四,第二天10月15日是星期五.这样,就把从公元325年以来积累的老账一笔勾销了.
二、为避免以后再发生春分飘离的现象,改闰年方法为: 凡公元年数能被4整除的是闰年,但当公元年数后边是带两个"0"的"世纪年"时,必须能被400整除的年才是闰年.
格里高利历的历年平均长度为365日5时49分12秒,比回归年长26秒.虽然照此计算,过3000年左右仍存在1天的误差,但这样的精确度已经相当了不起了.
由于格里高利历的内容比较简洁,便于记忆,而且精度较高,与天时符合较好,因此它逐步为各国政府所采用.我国是在辛亥革命后根据临时政府通电,从1912年1月1日正式使用格里高利历的.
西方历法的第一次改革是罗马朱利乌斯·凯撒大帝引进的.他采用的四年一闰的闰年方式.由于一个太阳年不刚好是365.25天,而是 365.…天.到16世纪,每年11分14秒的误差已经累积成10天,也就是历法上多了10天.于是教皇格利戈里八世进行了一次校正.他在1582年2月24日以教皇训令颁布,将1582年10月5日至14日抹掉,并且对原来的闰年方法进行了校正.经过校正的历法叫格利戈里历法,也就是我们现在用的公历.1752年,英国人决定采用格利戈里历法,不过从1582年到那时,历法又多出了1天,所以英国议会在1752年作出决定,抹掉11天——1752年9月3日至13日."
----------------
如何求某一天是星期几?
请注意这样一个事实,即从公元元年一月一日开始到现在,每一天都是连续的,而每个星期有7天,也是连续的,也就是说日
期和星期是一对一的,没有断档现象.我的基本思想是计算出当前天是从公元元年一月一日开始的第几天,再利用星期的周期性来计算公元任何一天是星期几.
假设当前年份为y,并忽略闰年,则从公元元年一月一日到y-1年共有365*(y-1)天,加上闰年多出来的天数,即加上1*((y-1)/4-(y-1)/100+(y-1)/400),"/"为整除,得:365*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400).我们再补上从当前1月1日开始到当前天的天数e,即为所求.即:365*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+e.它的值即为当前天是从公元元年一月一日开始算起的第几天.补上一个x(x是与公元元年一月一日是星期几有关的一个0~6的整数),并将这个表达式赋给变量t,即:t=x+365*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+e再用t除以7,余几即为星期几(余0为星期日).
下面讨论x的求法,如果知道公元元年一月一日是星期几,就可以直接得到x的值,但现在公式还没有求出来,不知道公元元年一月一日是星期几.不过没关系,毕竟知道最近的日期是星期几.不妨看一下2001年1月1日是星期几,结果是星期一,代入公式得t=x+,用除以7,得,余数是1,则为了保证2001年1月1日是星期一,取x 为0,所以公元元年一月一日也是星期一.至此,得到了完整的公式:
t=365*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+e
再将它做一下改进,我们将公式变形为:
t=(52*7+1)*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+e
利用星期的周期性,将52*7+1从公式中删除,得:
t=(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+e
以下是这种算法的C语言程序:
#include
char *name[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
void main(void)
{
int d,m,y,e,t,f;
printf("请输入日:");
fflush(stdout);
scanf("%d",&d);
printf("请输入月:");
fflush(stdout);
scanf("%d",
旧历2月30日与新历3月23日为同一天的年份有哪些
在1900年到2200年范围内,公历3月23日与农历二月三十同一天的年份如下:
1955年3月23日 二月(大)三十 星期三 干支:乙未年 己卯月 癸未日
1974年3月23日 二月(大)三十 星期六 干支:甲寅年 丁卯月 癸亥日
2020年3月23日 二月(大)三十 星期一 干支:庚子年 己卯月 乙丑日
2126年3月23日 二月(大)三十 星期六 干支:丙戌年 辛卯月 庚辰日
2183年3月23日 二月(大)三十 星期日 干支:癸未年 乙卯月 己卯日
为什么二月没有30号
因为地球公转一周360度,所需要的时间为365个昼日外加6小时9分钟10秒
季节大致也就轮回1次
所以自古人们就定义1年是365天
水星公转一周为地球上的68天;
金星公转一周为地球上的225天;
火星上1年约等于地球上两年,
木星上1年约等于地球上12年;
土星上1年约等于地球上29年;
天王星上1年约等于地球上84年;
海王星上1年约等于地球上165年;
离太阳最远的冥王星绕太阳一周需要地球上的248年.
并不是这么简单,现行的公历是格利戈里历法,这个历法的是1582年教皇格利戈里根据恺撒大帝引进的算法改进的.它采用的是闰年制也就是现行的制度,不过有一个需要注意的地方就是,这个历法并不是连续的,中间缺少了11天.1752年9月2日之后的那一天并不是1752年9月3日,而是1752年9月14日.也就是说,从1752年9月3日到1752年9月13日的11天并不存在.抹掉这11天是由英国议会做出的决定.所以要计算某年每个月的天数的,除了要考虑是否是闰年以外,还要考虑1752年的9月.
><
7⊥.html
-------------------------
公元元年的第一天,也就是公元1年1月1日.具体:公元1年1月1日是星期六.
---------------------
太阳历又称为阳历,是以地球绕太阳公转的运动周期为基础而制定的历法.太阳历的历年近似等于回归年,一年12个月,这个"月",实际上与朔望月无关.阳历的月份、日期都与太阳在黄道上的位置较好地符合,根据阳历的日期,在一年中可以明显看出四季寒暖变化的情况;但在每个月份中,看不出月亮的朔、望、两弦.
如今世界通行的公历就是一种阳历,平年365天,闰年366天,每四年一闰,每满百年少闰一次,到第四百年再闰,即每四百年中有97个闰年.公历的历年平均长度与回归年只有26秒之差,要累积3300年才差一日.
现行公历的产生、变化和发展
目前通行世界的公历,是我们大家最熟悉的一种阳历.这部历法浸透了人类几千年间所创造的文明,是古罗马人向埃及人学得,并随着罗马帝国的扩张和基督教的兴起而传播于世界各地.
公历最早的源头,可以追溯到古埃及的太阳历.尼罗河是埃及的命根子,正是由于计算尼罗河泛滥周期的需要,产生了古埃及的天文学和太阳历.七千年前,他们观察到,天狼星第一次和太阳同时升起的那一天之后,再过五、六十天,尼罗河就开始泛滥,于是他们就以这一天作为一年的开始,推算起来,这一天是7月19日. 最初一年定为360天,后来改为365天.这就是世界上第一个太阳历.后来他们又根据尼罗河泛滥和农业生产的情况,把一年分为三季,叫做洪水季、冬季和夏季.每季4个月,每月30天,每月里10天一大周,五天一小周.全年12个月,另加5天在年尾,为年终祭祀日.
这种以365天为一年的历年,是由于观测天狼星定出来的,叫天狼星年. 它和回归年相差约0.25天,因而在日历上每年的开始时间越来越早,经过1461个历年,各个日期再次与原来的季节吻合,以后又逐渐脱离.看起来,天狼星年好象在回归年周期左右徘徊,因而又叫它为徘徊年、游移年,1461年的循环周期被称为天狼周期.
后来,埃及人通过天文观测,发现年的真正周期是365.25日,但僧侣们为了使埃及的节日能与祭神会同时举行,以维护宗教的"神圣"地位,宁愿保持游移年.后来出土了一块石碑,上面有用埃及文和希腊文所写的碑文,记载了欧吉德皇帝在公元前238年发布的一道命令: 每经过四年,在第四年的年末五天祭祀日之后、下一年元旦之前,再加一天,并在这天举行欧吉德皇帝的节日庆祝会,以便让大家记住.欧吉德皇帝校正了以前历法的缺陷,这增加一天的年叫定年,其它年叫不定年.
古罗马人使用的历法经历了从太阴历到阴阳历、阳历的发展过程.罗马古时是意大利的一个小村,罗马人先是统一了意大利,而后又成为地跨欧、亚、非三洲的大帝国.最早,古罗马历全年10个月,有的历月30天,有的历月29天(这十分类似太阴历),还有70几天是年末休息日.罗马城第一个国王罗慕洛时期,各月有了名称,还排了次序.全年10个月,有的月30天,有的月31天,共304天,另外60几天是年末休息日.以罗马城建立的那一年,即公元前753年作为元年,这就是罗马纪元.某些欧洲历史学家直到17世纪末还使用这个纪年来记载历史事件.
第二个国王努马,参照希腊历法进行了改革,增加了第十一月和第十二月,同时调整各月的天数,改为1、3、5、8四个月每月31天,2、4、6、7、9、10、11七个月每月29天, 12月最短,只有28天.根据那时罗马的习惯,双数不吉祥,于是就在这个月里处决一年中所有的死刑犯.这样,历年为355天,比回归年少10多天. 为了纠正日期与季节逐年脱离的偏差,就在每四年中增加两个补充月,第一个补充月22天,加在第二年里,另一个23天加在第四年里,所增加的天数放在第十二月的24日与25日之间.这实际上就是阴阳历了,历年平均长度为366.25天,同时用增加或减少补充月的办法来补救历法与天时不和的缺点.但这样却更增加了混乱:月份随意流转.比如,掌管历法的大祭司长在自己的朋友执政的年份,就硬插进一个月,而当是仇人执政,就减少补充月,来缩短其任期.民间契约的执行也受到影响,祭祀节与斋戒日都在逐渐移动,本该夏天的收获节竟跑到了冬天举行.
当儒略·凯撒第三次任执政官时,指定以埃及天文学家索西琴尼为首的一批天文学家制定新历,这就是儒略历.
儒略历的主要内容是:每隔三年设一闰年,平年365天,闰年366天,历年平均长度为365.25日.以原先的第十一月1日为一年的开始,这样,罗马执政官上任时就恰值元旦. 儒略历每年分12个月,第1、3、5、7、9、11月是大月,大月每月31天.第4、6、8、10、12月为小月,小月每月30天.第二月(即原先的第十二月)在平年是29天,闰年30天,虽然月序不同于改历前,可是仍然保留着原来的特点,是一年中最短的月份.
儒略历从罗马纪元709年,即公元前45年1月1日开始实行. 这一年,为了弥补罗马历与太阳年的年差,除了355天的历年和一个23天的附加月外, 又插进两个月,其中一个月为33天,另一个月为34天.这样,这一年就有355+23+33+34=445天.这就是历史上所称的"乱年".
西方历法从儒略历实施开始,终于走上正轨.滑稽的是,那些颁发历书的祭司们,有本事从乌鸦的争斗预卜吉凶,却把改历命令中的"每隔三年设一闰年"误解为"每三年设一闰年".这个错误直到公元前9年才由奥古斯都下令改正过来.
"奥古斯都"是神圣、庄严、崇高的意思.在古罗马,这个尊号过去只是在举行宗教仪式上才授予的.在公元前27年,元老院把它授给了屋大维.他是儒略·凯撒姐姐的儿子,是凯撒遗嘱的第一继承人.
想当年,伟大的凯撒大帝南征北战,东讨西伐,雄才大略,不可一世,后来更成为事实上的独裁者.树大招风,遭到许多人嫉妒.公元前44年,当凯撒意图公开称帝时,却在元老院的议事厅遭到刺杀.此时屋大维还不满20岁,但他却颇具智力和手腕,逐渐积蓄力量,到公元前30年,击败所有对手,成了罗马"第一公民".屋大维实际上就是唯一具有无限权力的统治者,他结束了罗马共和时期.因此,历史上把从公元前27年开始的罗马,称为罗马帝国.
当奥古斯都准备改正闰年错误时,已经多闰了三次,于是他下令从公元前8年到公元4年停止闰年,即公元前5年、公元前1年和公元4年仍是平年,以后又恢复为每四年一闰了. 为了纪念他的这一功绩,罗马元老院通过决议,把儒略历的第八月改称为"Augustus",即奥古斯都月,因为他在这个月里曾取得过巨大的军事胜利.但这个月是小月,未免有点逊色,何况罗马人以单数为吉,而30天却是个双数,于是就从2月份拿出一天,加到奥古斯都月里,8月就31天了,可怜的2月在平年只有28天,碰上四年一次的闰年也不过29天.7、8、9月连续三个月都是大月,看起来很不顺眼,使用也不方便, 就把9月改为30天,10月为31天,11月为30天,12月为31天.这样,大小月相间的规律破坏了,一直到两千年后的今天还受到影响.
奥古斯都修改过的历法格式与现行公历一模一样了,但它的纪元,即计算年代的起算点还不是公元元年,它的闰年方法与现行公历还不完全一致.这两点差别与基督教的起源和发展有密切的关系.
基督教产生于公元一世纪的巴勒斯坦,"基督"一词是古希腊语的译音,意为"救世主".传说基督教的创始人是耶稣,他作为救世主,许诺穷人死后升入天堂,而富人要进入天堂比骆驼穿过针眼还难.由于拨动了社会下层人民的心弦,基督教逐渐传播开来,引起罗马统治者不安,在提庇留皇帝时代,罗马派驻犹太的总督,将耶稣钉死在十字架上.但是第三天,耶稣从坟墓中复活过来,并升了天,他将来还要对所有的死人、活人施行末日审判.后来,基督教徒把这些传说和耶稣言行记录下来,编写了《新约圣经》.
早期的基督教,因为打破了罗马帝国的神权统治,而多次遭到镇压.后来,罗马帝国日渐衰落,奴隶制日趋瓦解,原来的社会上层分子在彷徨中纷纷加入基督教,并逐步控制了它,努力寻求统治者对教会的支持.统治者对教会转而采取怀柔政策,到四世纪末,罗马帝国终于宣布基督教为其国教.
公历的纪元,就是从"耶稣降生"的那年算起的.这与基督教的兴盛密切相关.
此后,儒略历被认为是准确无误的历法, 于是人们把3月21日固定为春分日,却带来了未曾料想到的麻烦.随着时间的推移,人们发觉,真正的春分不再与当时的日历一致,这个昼夜相等的日期越来越早,到16世纪末已提前到3月. 春分逐渐提前,是由于儒略历并非最精确的历法,它的历年平均长度等于365.25日,还是比回归年长了11分14秒,这个差数虽然不大,但累积下去,128年就差一天,400年就差三天多.
为了不违背宗教会议的规定,满足教会对历法的要求,罗马教皇格里高利十三世设立了改革历法的专门委员会,比较了各种方案后, 决定采用意大利医生利里奥的方案,在400年中去掉儒略历多出的三个闰年.
1582年3月1日,格里高利颁发了改历命令,内容是:
一、1582年10月4日后的一天是10月15日,而不是10月5日,但星期序号仍然连续计算,10月4日是星期四,第二天10月15日是星期五.这样,就把从公元325年以来积累的老账一笔勾销了.
二、为避免以后再发生春分飘离的现象,改闰年方法为: 凡公元年数能被4整除的是闰年,但当公元年数后边是带两个"0"的"世纪年"时,必须能被400整除的年才是闰年.
格里高利历的历年平均长度为365日5时49分12秒,比回归年长26秒.虽然照此计算,过3000年左右仍存在1天的误差,但这样的精确度已经相当了不起了.
由于格里高利历的内容比较简洁,便于记忆,而且精度较高,与天时符合较好,因此它逐步为各国政府所采用.我国是在辛亥革命后根据临时政府通电,从1912年1月1日正式使用格里高利历的.
西方历法的第一次改革是罗马朱利乌斯·凯撒大帝引进的.他采用的四年一闰的闰年方式.由于一个太阳年不刚好是365.25天,而是 365.…天.到16世纪,每年11分14秒的误差已经累积成10天,也就是历法上多了10天.于是教皇格利戈里八世进行了一次校正.他在1582年2月24日以教皇训令颁布,将1582年10月5日至14日抹掉,并且对原来的闰年方法进行了校正.经过校正的历法叫格利戈里历法,也就是我们现在用的公历.1752年,英国人决定采用格利戈里历法,不过从1582年到那时,历法又多出了1天,所以英国议会在1752年作出决定,抹掉11天——1752年9月3日至13日."
----------------
如何求某一天是星期几?
请注意这样一个事实,即从公元元年一月一日开始到现在,每一天都是连续的,而每个星期有7天,也是连续的,也就是说日
期和星期是一对一的,没有断档现象.我的基本思想是计算出当前天是从公元元年一月一日开始的第几天,再利用星期的周期性来计算公元任何一天是星期几.
假设当前年份为y,并忽略闰年,则从公元元年一月一日到y-1年共有365*(y-1)天,加上闰年多出来的天数,即加上1*((y-1)/4-(y-1)/100+(y-1)/400),"/"为整除,得:365*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400).我们再补上从当前1月1日开始到当前天的天数e,即为所求.即:365*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+e.它的值即为当前天是从公元元年一月一日开始算起的第几天.补上一个x(x是与公元元年一月一日是星期几有关的一个0~6的整数),并将这个表达式赋给变量t,即:t=x+365*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+e再用t除以7,余几即为星期几(余0为星期日).
下面讨论x的求法,如果知道公元元年一月一日是星期几,就可以直接得到x的值,但现在公式还没有求出来,不知道公元元年一月一日是星期几.不过没关系,毕竟知道最近的日期是星期几.不妨看一下2001年1月1日是星期几,结果是星期一,代入公式得t=x+,用除以7,得,余数是1,则为了保证2001年1月1日是星期一,取x 为0,所以公元元年一月一日也是星期一.至此,得到了完整的公式:
t=365*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+e
再将它做一下改进,我们将公式变形为:
t=(52*7+1)*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+e
利用星期的周期性,将52*7+1从公式中删除,得:
t=(y-1)+((y-1)/4-(y-1)/100+(y-1)/400)+e
以下是这种算法的C语言程序:
#include
char *name[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
void main(void)
{
int d,m,y,e,t,f;
printf("请输入日:");
fflush(stdout);
scanf("%d",&d);
printf("请输入月:");
fflush(stdout);
scanf("%d",
&m); printf("请输入年:"); fflush(stdout); scanf("%d",&y); switch(m) { case 1:e=d;break; case 2:e=31+d;break; case 3:e=59+d;break; case 4:e=90+d;break; case 5:e=120+d;break; case 6:e=151+d;break; case 7:e=181+d;break; case 8:e=212+d;break; case 9:e=243+d;break; case 10:e=273+d;break; case 11:e=304+d;break; case 12:e=334+d;break; default:return; } if(y%4==0&&y%100!=0||y%400==0) if(m>2) ++e; --y; t=y+y/4-y/100+y/400+e; f=t%7; printf("这一天是 %s\n",name[f]); } 再谈星期的计算 "让我们看看1752年9月14号这个星期四吧,我们的公式最远只能推算到这里了." ——Kim S. Larsen "从公元元年1月1日开始到现在,每一天都是连续的." ——于鹏 "西方历法的第一次改革是罗马朱利乌斯·凯撒大帝引进的.他采用的四年一闰的闰年方式.由于一个太阳年不刚好是365.25天,而是 365.…天.到16世纪,每年11分14秒的误差已经累积成10天,也就是历法上多了10天.于是教皇格利戈里八世进行了一次校正.他在1582年2月24日以教皇训令颁布,将1582年10月5日至14日抹掉,并且对原来的闰年方法进行了校正.经过校正的历法叫格利戈里历法,也就是我们现在用的公历.1752年,英国人决定采用格利戈里历法,不过从1582年到那时,历法又多出了1天,所以英国议会在1752年作出决定,抹掉11天——1752年9月3日至13日." 日期的限制是Kim S. Larsen算法的问题吗?不. 公元元年1月一日开始到现在,每一天都是连续的吗?不. 一个简单的方法就可以证明上述事实——用Linux的cal命令.启动你的Linux在#提示符下输入 cal 9 1752 你会看到: September 1752 Su Mo Tu We Th Fr Sa 1 2 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 有趣吧一个只有19天的九月. 让我们来看看这两个算法,Kim S. Larsen博士的算法和于鹏同学的算法在本质上其实是相同的.只不过在实现的细节上略有不同.如果让两个算法去计算同一天(无论在1752年9月14日之前还是之后)是星期几,二者的答案肯定是相同的.让我们来分析一下吧. 首先,他们把日期对星期的决定作用都分为年、月、日三个决定因素.对于年的因素,从两者的计算公式 就能看出是相同的;对于日的因素,两者都是直接计入,故也是相同的;而对于月的因素,Kim S. Larsen博士构造了一个公式,(一个非常巧妙的公式,)通过以月份为自变量算出的函数值作为对星期的影响量.而于鹏同学采用了查表的方法,即先构造好一个以月份为索引的表对于相应的月份,通过查表得出其对星期的影响量.(以switch语句实现)不妨作如下演算:(为了一致起见,采用一、二月作为上年的十三、十四月.这是一个非常聪明的方法.)用于鹏同学的方法建表,并对7取模(表一).再建立Kim S. Larsen函数 的函数值表(表二).很显然二者是相同的. 三月 0 0 三月 0 四月 31 3 四月 3 五月 61 5 五月 5 六月 92 1 六月 1 七月 122 3 七月 3 八月 153 6 八月 6 九月 184 2 九月 2 十月 214 4 十月 4 十一月 245 0 十一月 0 十二月 275 2 十二月 2 十三月 306 5 十三月 5 十四月 337 1 十四月 1 表一 表二 其次,在处理闰年2月29日的问题上,两者的做法略有不同,但效果还是相同的.Kim S. Larsen博士采用的方法相当高明,他把二月排在一年的最后,管他闰不闰,反正是最后一天.而于鹏同学加了一个if分支,直观有效. 大师不愧为大师,设计的算法简洁、优美;而于鹏同学的算法,简单易懂,并且效率并不差. 好了,该解决这个"历史遗留问题"了.其实,并没有什么数学公式能算出指定日期是星期几,我们可以试着拼凑一个,不过何必呢?加个if分枝不就解决问题了吗?(Kim S. Larsen算法+于鹏思想)对Kim S. Larsen 博士的程序作一些必要的添加,可得到突破1752年9月14日日期限制的C语言程序. /*C++Builder5下编译通过*/ /*假设输入的是正确的日期*/ #include char *name[] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" }; void main(){ int D,M,Y,A; printf("Day: "); fflush(stdout); scanf("%d",&D); printf("Month: "); fflush(stdout); scanf("%d",&M); printf("Year: "); fflush(stdout); scanf("%d",&Y); if ((M == 1) || (M == 2)){/*一月、二月当作前一年的十三、十四月*/ M += 12; Y--; } if ((Y < 1752)||((Y == 1752)&&(M < 9)) ||((Y == 1752)&&(M == 9)&&(D >>>精品(文文)实时阅读<<<