亚洲必赢官网app因日期推算星期和历法由来

By admin in 亚洲必赢官网app on 2018年10月19日

太阳历与阳历(儒略历与格里历) 现在世界上通用的历法——公历,有人已似是若无地喻为“西历”。其实,究其到底 源,这种历法并非发生被西方,而是有让6000几近年前的古老埃及。     古埃及天炎热,雨水稀少,但是农业生产却很盛。这是干吗吧?原来就跟尼罗河 的时限泛滥有着密切的涉及。埃及的大多数海疆都是荒漠,只有尼罗河流域像相同久绿色的缎 带从南到北贯穿其间。直到现代,埃及之之95%之上的丁也都汇集在及时长达绿色的生命带 中。因此,在希腊时代,西方人便拿埃及叫“尼罗河送来之礼物”。古代埃及口更为用尼 罗河算得“母亲河”。     尼罗河全长6648公里,同亚洲的长江、南美洲的亚马逊河和北美洲之密西西比河并 称为世界最为丰富的河。     尼罗河发源于赤道附近,主流叫白尼罗河,从乌干达流苏丹,在喀土穆和发源于埃塞 俄比亚底青尼罗河统一,流入埃及。     在埃及国内,尼罗河每年6月初步涨水,7暨10月凡泛滥期,这时洪水夹带在大量腐 殖质,灌满了二者龟裂的田畴。几独周末后,当洪水退去时,农田就是留下了相同叠肥沃的淤 泥,等于上了同潮肥。11月展开播种,第二年的3顶4月赢得。尼罗河还有一个风味,那 就是年年的涨水基本是定时定量,虽有必然的出入,但差距不是最最死,从无洪水滔天淹没 一切的老大灾荒。这就吧古埃及口尽早创建大规模的水利工程灌溉系统和制定历法提供了有利于。     古埃及人数以不违农时,发展农业生产,逐渐认识及得控制尼罗河溢出的原理,准确 地计算时,这就用来同等种历法。他们在漫长的生产实践中,积累了好多涉。     古埃及人数意识尼罗河历次泛滥之间约相隔365天。同时,他们还发现,每年6月的 某同上早上,当尼罗河之潮头来到今开罗相邻时,天狼星与太阳同时从地平线升起。以此 为依据,古埃及人口即便将同年肯定为365天,把上狼星与太阳同时起地平线升起的那么同样龙,定 为同年之起点。一年分为12独月,每月30上,年终加5天作为节日,这就是是埃及底太阳 历。     埃及底阳历将一律年得为365上,与地围绕太阳公转一绕的日(回归年)相比 较,只相差四分之一上,这在当下早已是一定准确了。但是,一年去四分之一天未觉得, 经过4年尽管相差一上。经过730年,历法上的时刻尽管比较实际时间推了一半年,冬天和夏天 正好颠倒过来。再过730年,才能够回去原的起点。公元前46年,罗马主帅儒略·凯撒 (又译朱利乌斯·凯撒)决定为埃及之阳历为底本,重新编排历法。凯撒主持编制的历 法,被后人称为“儒略历”。     儒略历法对埃及太阳历中年年约四分之一天的误差,作了这般的调动:设平年和闰年, 平年365龙,闰年366龙。每4年市1只闰年。单月每月31上,双月受的2月平年2 9龙,闰年30龙,其它双月每月30天。     恺撒蛮后,他的子孙后代奥古斯都因为好不行当8月,便打2月着腾出一天加于8月及, 使8月吗改成大月,即31龙,同时相应把9、11简单只月得为小月,10、12点儿个月定 为大月。经过这样的改动,各月的命运和今用的公历基本相同了。公元325年,罗马 皇帝君士坦丁在同样不成宗教会议及,规定儒略历为基督教的历法,但未曾规定啊一样年是她的起 点。到了公元6世纪时,基督教徒把500几近年前基督教传说的创始人耶稣·基督诞生之那 一龙,说成是公元元年。“公元”的拉丁文的意就是是“主的生年”,用拉丁文A.D.表 示。在马上无异于年以前,称为“公元前”,英文的意是“基督以前”,用英文B.C.表示。     儒略历虽然比埃及的公历进了一如既往步,但回归年以时有发生11瓜分14秒的误差,积128年 又如果离开一龙。儒略历在欧洲通达了1600大抵年,至16世纪下半叶,历法上之日子比回 归年迟了10龙。比如,1583年之春分应以3月21日,历法上可是3月11日。此 外,教会确定耶稣复活节,应于了春分月圆后底第一单礼拜,由于春分已离开10上的 多,耶稣究竟在啊一样天“复活”的,也改为了问题。因此,对儒略历作进一步的改造,已经势 在必行。     罗马教皇格里高利十三世,在1582年团了同一批天文学家,根据哥白尼日心说计算 出来的数额,对儒略历作了改。将1582年10月5日届14日中间的10上公布撤 销,继10月4日之后也10月15日,所以1533年的春分又复归于3月21日;过去 将4年市1只闰年,400年凡100独闰年,现在移也400年遭受出97单闰年,从而 大体上弥补了11划分14秒的误差。置闰的措施是:凡是逢百年那无异年得就此400除了尽的 就是闰年,除未老之虽非是(如:1600年凡是年,1700年、1800年、1900年 皆非是年,2000年是闰年)。后来人们将随即等同初的历法称为“格里高利历”,也就算是今 龙世界上所通用的历法,简称“格里历”或阳历。     中华人民共和国成立后,中央人民政府指令,中国因格里历为国历法,并以公元纪 年,但未扔阴历。     当然,格里历也未是美好的,每月的命运还是参差不齐,规则性不强,特别是每经过 过三千几百年还会见产生同龙之误差。随着生产的前行以及天文学的上扬,这些毛病将不止获得改 进。 出处:http://www.nongli.com/sj5000/008.htm

 ====================================================

再也谈星期的乘除

“让咱省1752年9月14声泪俱下者星期四吧,我们的公式最远不得不推算到此地了。”
              ——Kim S. Larsen

“从公元元年1月1日初步到今,每一样上还是连接的。”
                                         ——于鹏

“西方历法的第一次改革是罗马朱利乌斯·凯撒大帝引进的。他动用的季年一样闰的闰年方式。由于一个阳光年不刚是365.25上,而是
365.242199…天。到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 <stdio.h>
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 <
3)))/*判断是否当1752年9月3日前*/
    A = (D + 2*M + 3*(M+1)/5 + Y + Y/4 +5) %
7;/*1752年9月3日前的公式*/
  else A = (D + 2*M + 3*(M+1)/5 + Y + Y/4 – Y/100 + Y/400) %
7;/*1752年9月3日后底公式*/
  printf(“It’s a %s.\n”,name[A]);
}

出处:http://bbs.csdn.net/topics/10163840

==================================================

依据日期推算星期作者: 宋维业

     
记得几年前,有只新闻报道说,有个人记忆力好强,可以记住任意日期是星期几。

      我感觉不绝依仗谱,其实,这个星期几是得经公式计算出来的。

里头同样种叫做基姆拉尔森计算公式:

      公式是W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7

  以公式中d表示日期被的日数+1,m表示月份数,y表示年数。

  注意:在公式中发出只及其它公式不同之地方:

  将一月以及二月当是达到一致年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来替代入公式计算。

 

再有蔡勒公式:

 

        W = [C/4] – 2C + y + [y/4]

  • [13 * (M+1) / 5] + d – 1

 

或者是:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

 

公式中的记号含义如下:
w:星期;
w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
c:世纪-1(前少位数)
y:年(后少各类数)
m:月(m大于等于3,小于等于14,即以蔡勒公式中,某年的1、2月如果作为上同年之13、14月来计量,比如2003年1月1日若是作2002年底13月1日来算)
d:日
[ ]表示取整,即只要整数部分。

 

 

      另外,还时有发生只工作,这个公式只能算1582年10月15日(含)之后的景况。

      原因是呀啊?

    在本通行的历法记载上,全世界居然发生十龙没有任何人出生了,也尚未任何人死亡了,也尚未出了大小值得纪念的总人口要转业。这便是1582年10月5日到10月14日,持续时间为0。

 
事实上,目前世界畅通无阻的公历中,就来持续时间为0的10天,即公元1582年10月5日到14日。事情是这么的:

 
西方历法的第一不成改革是罗马朱利乌斯·凯撒大帝于公元前45年亲自引进的。当时采用的数字是同一年365.25天,于是朱利安历法成为最好简便易行的历法:第一、二、三年都是365龙,三年结余的0.25天让第四年,第四年尽管发366龙,这便是闰年。于是再次365,365,365,366底周期,每年还是整数。

  但是,一个太阳年无正是362.25天,而是
362.242199…天,每年去11分开14秒,也便是朱利安历法中年年差不多算了11分钟14秒。由于误差不顶非常,头几年没有什么关系,凯撒活在时影响还免充分。但是,一年同时平等年,误差累积起来,朱利安历法就和事实上的太阳年未齐拍了。例如每年春分当3月21日前后,但差一点个世纪后,春分在朱利安历法上的日子越来越提前了,这对老乡种地不便民,对教会确定复活节以哪一样天呢拉动劳动。由于朱利安历法是凯撒亲自制定的,上述情况对客的威望是一个沉重打击。

 
16世纪时,教皇格利戈里八大地进行了平次校正。因为交16世纪,每年11私分14秒就累积成10龙,也尽管是历法上基本上矣10天,这对于确定复活节导致严重困难,不得不采取措施补救。为这,格利戈里应用了缓解此类难题的不过古老最管用之方针—-他召集一个委员会,任命一个智慧之召集人,即独立之救世主会见数学家克利斯多弗·克拉维斯(Christopher
Clavius),要求委员会提出解决方案。委员会受1587年起来工作。

 
克拉维斯委员会面临两单不等之题目,它用不同的法门进行解决。第一,朱利安历法现在走快了10上,必须拉回来与阳历一致。克拉维斯建议就此官方声明将当时10上去掉!教皇格利戈八全世界于1582年2月24日因教皇训令颁布,将1582年10月5日至14勾掉,于是立即10上即熄灭了,一去不复返。1582年10月4日过了了,第二天都是10月15日矣,于是历法又返回与阳历同步。

 
当时与后来生广大口对是感到愕然,目瞪口呆,有人当是荒唐、武断。“教皇一张训令就是会去除掉日历上之10龙?”

 
但是,这10天诚不在了,这10上什么吗从没发出,这10龙从不怕从未吃饭。如果你会找到这底日志,10月4日笔记了晚,下同样页就是10月15日之从业。用对语言表达,这10天之持续时间为0。

 
其实全不必大惊小怪。太阳年、太阳日与自然现象有关联,至于有平等天是什么日子,则是人造的,与给少儿打名字如出一辙。我们可免用阳历,一年不分月,只受第1龙,第2龙,……第125龙,……到第365天,这是同意的。喜欢偶数的人头方可说明一个“偶数日历”:2月2日,2月4日……4月2日……12月30日,12月32日……,14月2日,这吗是允许的,只要同年365龙或366龙即执行。这再次同不行验证,在一个正确理论或系统受到区分出由自然现象决定(因而要符合实验)的有的与人造规定的有是着重之。

 
当然,这个控制对这底社会生活也罢会见发必然影响,例如出生在10月5日交10月14日之人口当1582年寻找不交祥和之生辰,但跟出生在2月29日之口对比,少了同样年诞辰算不了什么。还有,那年10月份的工薪、利息为会见生问题,但不知当年的银行、工资制度什么样。不过这些问题的震慑微乎其微。

 
第二独问题是要提出历法的加规则,不吃每年多有的11分割14秒累积得最多。于是克拉维斯委员会提出同样年生365.2422天之方案,这比朱利安历法的365.25上大大接近大自然运动实际。据此对朱利安历法只有“四年一如既往闰”的简易规定进行校正:四年一样闰,但是世纪之交的’00年,如100年,200年,不闰,即各级一百年少闰一糟糕。这样同样算,闰年还要最为少了,于是更规定:每季单百年的世纪之交,即400年,800年抵仍是闰年。最终关于闰年之规定为,用4除尽之年仍是闰年。教皇训令也许可了这个校正。经过就片独校正的朱利安历法叫格利戈里历法,也不怕是我们现在所以之阳历。由于格利戈里历法中之年及公历仍发生误差,还欲更加校正,不过两岸只是相差25.96秒,每过2800年才相关一上,在实质上在蒙没什么影响。这样,1900年无是闰年,但2000年是闰年,每400年才遇相同不善!又一个特殊性!

 
格利戈里历法很快以罗马天主教势力范围让大面积接受,但是于英国可引起了千篇一律片喧嚣的反对声,英国总人口依旧坚持朱利安历法,拒绝“抹掉10上”。直到1752年,英国人才想通,理性终于占据了上风,不过从1582年到当时,历法又大多有了1上,所以英国议会在1752年作出决定,抹掉11龙—-1752年9月3日届13日,至此才承受了格利戈里的改制。请留意,英国史受到,这11龙什么吧从来不有。由此可以看到,一蹩脚历法改革是多不轻,对于一个灵气、合理之操纵,仅仅以看上去有些异常就有人反对,竟然费了快二百年才承受!

       附录一个基姆拉尔森计算公式C语言程序

#include “stdio.h”

void CaculateWeekDay(int y,int m, int d)
{
    if(m==1||m==2) {
        m+=12;
        y–;
    }
    int iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
    switch(iWeek)
    {
    case 0: printf(“星期一\n”); break;
    case 1: printf(“星期二\n”); break;
    case 2: printf(“星期三\n”); break;
    case 3: printf(“星期四\n”); break;
    case 4: printf(“星期五\n”); break;
    case 5: printf(“星期六\n”); break;
    case 6: printf(“星期日\n”); break;
    }

void main()
{
    int year=0,month=0,day=0;
    printf(“请输入日期:\n格式为:1900,1,1\n”);
    char temp = ‘1’;
    while (temp != ‘0’)
    {
        scanf(“%d,%d,%d”,&year,&month,&day);
        scanf(“%c”,&temp);
        CaculateWeekDay(year,month,day);
        printf(“输入0退出,其他后续:”);
        scanf(“%c”,&temp);
    }
}

运转效果:
告输入日期:
格式为:1900,1,1
2008,4,29
星期二
输入0退出,其他后续:d
2008,1,1
星期二
输入0退出,其他后续:l
2008,8,8
星期五
输入0退出,其他后续:0
恳请遵任意键继续. . .

(根据网资料整理)

出处:http://blog.renren.com/share/112875057/8739219718

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2018 亚洲必赢手机官网 版权所有