1582年日历图片
- 格式:doc
- 大小:322.86 KB
- 文档页数:6
历史上的1582年,我国正值明神宗万历十年,但是在现在通行的历法中,有10天是日历中所没有记载的,这就是1582年10月5日-10月14日。
小伙伴们,看一看你们手机上的日历,1582年10月4日的后一天竟然是1582年10月15日!为什么日历中少了10天呢?真正的一年应该是多少天?西方最早的历法是朱利安历法,当时采用的是一年365.25天的计算方式,一般四年一个周期,前三年都是365天,但是每年都会余下0.25天,将这三年余下的0.25天放到第四年,所以第四年就是366天。
因此,在朱利安历法中,采用的是365天、365天、365天、366天这个四年一个周期的历法方式。
但是,真正的一年并不是365.25天,而是365.242199…天(太阳年),两者相差了11分14秒,也就是说,朱利安历法中每年多算了11分钟14秒。
虽然每年的误差并不是很大,但是日积月累,两者的差距就越来越大。
到了16世纪,每年11分14秒的差距已经累积到了10天,也就是历法上记载的时间比真实的时间多了10天。
日历上为什么少了1582年10月5日-10月14日这10天?朱利安历法现在走快了10天,必须将其拉回到与太阳年一致。
克拉维斯建议用官方声明把这10天抹掉!1582年2月24日,教皇格利戈八世以教皇训令颁布,将1582年10月5日至14日抹掉,因此历史上这10天就消失了。
小伙伴们,看一看你们手机上的日历,1582年10月4日的后一天就是1582年10月15日,此后历法的记载回到了与太阳年的同步。
相信很多人可能会对此感到惊讶或者质疑,但是,这10天在历法中的确不存在了,确切的说,这10天在历法中并没有存在过。
如果你能找到当时的日记,10月4日记完后,下一页就是10月15日的事,这10天没有存在过,自然什么也没有发生。
用科学语言表达,这10天的持续时间为0。
每年多出的11分14秒怎么办?为了不让每年多出的11分14秒累积得太多,于是克拉维斯委员会提出一年有365.2422天的方案,这比之前朱利安历法的365.25天更接近于实际。
消失的十天——1582年10月的日历
在许多手机的日历上,查看1582年的时候会发现一件奇怪的事情,就是在那一年的10月份,日历上是直接从4号转到15号的,没有中间的十天。
对于这一现象的原因,有多种说法,但最具有科学依据,真正令人信服的说法是:1582年(儒略历)——罗马教皇格里高利十三世制定现今通用的公历,将当天的旧历(儒略历)1582年10月5日改为新历(格里高利历)1582年10月15日。
这一做法具体的解释是在1582年,随着天文观测技术的发展,西方的人们发现春分已经从3月21日提前到了3月11日,比之前计算的提前了整整十天。
为了消除误差,教皇随后强行下令去除这十天。
也就是1582年的10月4日结束后,直接跳到10月15日。
1582年10月日历
出现这种情况,并不是那一年发生了什么重大事件,而是由于先前历法的不完善造成的。
我们现在使用的公历是格里历,这个历法的前身是儒略历法。
儒略历法是罗马共和国于公元前45年1月1日起执行的,目的是取代旧罗马历法。
在儒略历法中,一年被划分为12个月,单数月份31天,双数月份除2月份外30天,2月份平年29天,闰年30天,因此全年天数平年365天,闰年366天,年平均长度为365.25天。
而在天文学中,地球环绕太阳转动一圈的时间才是真正意义上的一天,周期约是365.2422天。
因此,使用儒略历法之后,每年多算了11分钟14秒。
由于误差不太大,头几年没什么关系,但是,一年又一年,误差累积起来,儒略历法就与实际的太阳年不合拍了。
到了16世纪,这个偏差已经达到了10天。
于是在1582年,当时的教皇于1582年2月24日以教皇训令颁布,将1582年10月5日至14日抹掉,于是这10天就消失了,一去不复返。
1582年10月4日过完了,第二天已经是10月15日了,于是历法又回到与太阳年同步。
这便是今天世界上通用的历法——格里高利历,简称格里历,也就是我们说的公历。
中国历代以来所有的历法都给予每年一个标准日期,规定每年的阳历元旦(亥子之交)必须是冬至日,阴历又制定月建规则,阴历月跟着阳历辰转,超辰之月即是上月之闰月,所以中国的历法是不会出现西方历法这种盲目现象的。
1582年日历图片(“消失”的十天)我们将华为手机日历调整到1582年的10月份,会惊奇地发现,当年的10月5日至14日“消失了”,从4日直接跳到了15日。
这一年究竟发生了什么?不仅如此,有的手机上面甚至没有出现10月的日历,从1582年9月直接跳到了11月,那么,10月去哪了?华为手机日历1582年10月“莫名其妙”被抹去了10天,究竟是是华为系统出现BUG还是另有隐情?其实,这个锅并不能丢给华为,出现这样的情况也并不是华为手机日历出现了bug。
因为在苹果手机上也出现了同样的情况,有许多网友反映自己的iPhone日历上也没有1582年10月的日历。
出现这种情况,并不是那一年发生了什么重大事件,而是由于先前历法的不完善造成的。
我们现在使用的公历是格里历,这个历法的前身是儒略历法。
儒略历法是罗马共和国于公元前45年1月1日起执行的,其目的是取代旧罗马历法。
在儒略历法中,一年被划分为12个月,单数月份31天,双数月份除2月份外30天,2月份平年29天,闰年30天,因此全年天数平年365天,闰年366天,年平均长度为365.25天。
而在天文学中,地球环绕太阳转动一圈的时间才是真正意义上的一年,周期约是365.2422天。
因此,使用儒略历法之后,每年多算了11分钟14秒。
由于误差不太大,头几年没什么关系,但是,一年又一年,误差累积起来,儒略历法就与实际的太阳年不合拍了。
到了16世纪,这个偏差已经达到了10天。
于是在1582年,当时的教皇于2月24日当天以教皇训令颁布,将1582年10月5日至14日抹掉,于是这10天就消失了,一去不复返。
1582年10月4日过完了,第二天已经是10月15日了,于是历法又回到与太阳年同步。
这便是今天世界上通用的历法——格里高利历,简称格里历,也就是我们说的公历。
中国历代以来所有的历法都给予每年一个标准日期,规定每年的阳历元旦(亥子之交)必须是冬至日,阴历又制定月建规则,阴历月跟着阳历辰转,超辰之月即是上月之闰月,所以中国的历法是不会出现西方历法这种盲目现象的。
1582年日历图片
2.1实训说明
2.1.1 实验背景
日历是一种记载日期等相关信息的出版物,通常每页显示一日信息的叫日历,每页显示一个月信息的叫月历,每页显示全年信息的叫年历。
从日历的诞生至今,它有多种的呈现形式,如挂历、台历、年历卡、电子日历、万年历等。
2.1.2 功能描述
在生活中,日历对于人们的旅程规划、行程安排和工作计划等有着重要的作用。
下面将使用现阶段学习过的知识来实现年历的制作。
具体需求如下所示:
?根据用户输入的年份输出对应的年历
?用户可输入年份的取值范围是1582~9999
?判断31天的月份(1月、3月、5月、7月、8月、10月、12月)
?判断30天的月份(4月、6月、9月、11月)
?实现闰年2月29天,平年2月28天的功能
?将日期按照对应的星期输出展示
?按照3行4列的方式展示给定年份的年历
?确定年历中每月的星期输出顺序为“日、一、二、三、四、五、六”
接下来对本阶段案例的实现思路进行系统的分析,将一个复杂的案例分解成多个阶段,逐一进行实现,具体如下图所示。
31天or30天or28天or29天平年普通年世纪年or闰年or判断判断③②判断①
④假设完成非周日的XX月1号前填充空白XX年1月1日对应的星期XX月1日为周日,用0表示计算⑤填充空白⑥制作年历实现思路图
从上图可以清晰的看到,实现年历的制作流程共分为6个阶段,第1阶段和第2阶段的判断是为了确定第3阶段2月份的天数,闰年2月份29天,平年28天。
接着在第4阶段将每月的1日设置为周天,使用0表示,周一到周六分别使用1~6表示,循环输出年历。
然后利用蔡勒公式计算用户给定年份的1月1日对应的星期。
最后对每月1号不是周日的月份日期,在输出前进行空白填充。
.
2.1.3 必备技术
(一)网页技术(HTML+CSS)
1.HTML网页构建的基本设计;
2.HTML网页样式的基本设计;
(二)PHP开发语言
1.变量
2.运算符
3.if语句
4.for语句
2.1.4 学时分配
实训课程学时安排可参考下表。
2.1.5 实训目标
1.熟练掌握if、for、逻辑运算符的使用。
2.掌握编程实现网页年历的生成。
2.2准备开发环境
本项目支持如下软件版本的运行环境:
?Apache 2.2~2.4
?PHP 5.3~7.1
等集成环境XAMPP、WampServer支持?
2.3实训任务描述
任务一:判断世纪年和普通年
【任务描述】
通常来讲,一百年是一个世纪,因此,只要用户给定的年份除以100,余数为0则表示该年份为世纪年,否则为普通年。
编写PHP文件calendar.php,具体代码如下所示。
2008表示位数字表示的年份,如2008在上述代码中,变量$year用于保存用户给出的4相等00,与是世纪年时,表达式“1998年。
当$year$year % 100”的结果为年,1998表示行的提示语句。
行提示语句,否则输出第7结果为真,则if语句判断为真,输出第5”的结果有两种情况,分% 1004值得一提的是,第行的判断语句中,表达式“$year
转,0别是0和任意正整数,而任意正整数在条件判断语句中会自动转换成布尔类型值true行
代码修改成如下形式。
4~8换成false。
因此,可以将第
在程序开发中,若在不考虑程序运行的复杂程度,两种方式都可以。
但若是要减少程序运行的
复杂度,则建议使用第2种编写方式。
任务二:判断闰年和平年【任务描述】闰年是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立具体如下:其中,的。
补上时间差的年份为闰年。
对于世纪年和普通年的闰年算法有所不同,的100余数不为0余数为?普通年闰年的判断条件,需要同时满足除以40且除以两种情况0余数不为32000400?世纪年闰年的判断条件,需要同时满足除以余数为且除以的两种情况PHP接下来,去掉上面输出的提示信息,添加确定是闰年还是平年的判断,继续编写.
文件calendar.php,具体代码如下。
行代码用于判断世纪年是否为7~93~5行代码用于判断普通年是否为闰年,第上述第判断后若只有一条执此外,if1闰年。
当为闰年时将变量$leap的值设置,方便后面的判断。
7~9行代码修
改成以下形式。
”,因此可以将上述第3~5行和第行语句,则可以去掉“{}
任务三:判断每月最大的日期【任务描述】继续编写calendar.php文件,实现每月最大日期的判断。
具体代码如下所示。
月时每月最大的日10月或12月、月、月、上述第3行代码用于判断13月、57月、8,其余的月份最29行用于判断2月在闰年时最大的日期为,普通年时为285~631期为,第30。
大的日期则是行代码后添加以下代码,具体如下。
9循环进行测试查看,在上述第for接着可以通过.
文件,效果如下图所示。
从图中可以清晰的看出每个月共calendar.php在浏览器中运行有多少天,以及各个月份天数的差别。
任务四:输出年月日对应的日期【任务描述】分行输出年历1.
获取到每月共多少天后,接下来将每个月的日期按照星期的设置格式在表格中输出展7个日期一行的设计思路如下所示。
示。
其中,关于如何实现。
1()根据需求分析,得到星期输出顺序为“日、一、二、三、四、五、六”表示星期一,依1位数字进行表示,0表示星期日,之间的(2)设定星期使用0~67 次类推。
$w这里先假设为0(3)将用户给定年份的每月1日对应的星期变量若大,并判断$w的值是否大于61)在循环每月的日期时,(4动态为星期变量$w加,,重置为0。
于6 且不是最后一天时,设置换行)当星期变量5$w等于6(文件,并去掉测试查看代码。
在确定每月的最按照上面的设计思路,修改calendar.php日对应的星期。
具体代码如下。
1,用于保存假设的某年某月$w大日期后添加日期变量
行用10行用于循环每月的日期,第11上述第7~8行用于输出日历的标题和星期,第行用于在表格中实现换行,即结束当前行,并开始下一行。
第于在表格中输出日期,第12 15行用于设置星期的变动。
修改完成后,在浏览器中进行预览,效果如下图所示。
分行展示年历从上述的预览效果中可以看出,每月的日期按照星期的格式展示,但是每个日期对应的星期并不符合日期的算法。
因此,接下来我们利用蔡勒公式计算出年月日对应的星期。
2.按星期输出年历在完成对应星期的计算前,首先具体看一下蔡勒公式以及其涉及到的具体变量含义,具体如下。
y / 100 + y / 400) % 7
w = (d + 1 + 2 * m + 3 * (m + 1) / 5 + y + y / 4 –。
这些变量的具和、、个变量,分别为在上述给出的蔡勒公式中,共出现了4wymd 体含义如下所示。
.
?w:表示星期,其值取值范围是0~6,0表示星期日,1表示星期一,依次类推。
?y:4位数字表示的年份,其有效可以计算的范围是从1582年10月起。
如2020表示2020年。
?m:表示月份,其取值范围是3~14,3表示3月,4表示4月,依次类推。
值得注意的是,在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算。
如2020年1月10日将要看作2019年的13月1日来计算。
?d:表示日,其取值范围是1~31
了解蔡勒公式的规定后,删除calendar.php文件中设置的星期变量$w,在判断每月的日期前添加以下代码,具体如下:
)的运算/在上述代码中,在利用蔡勒公式计算年月日对应的星期时,对于执行除法(我们1号不是星期日时,要利用强制类型转换取整,防止出现小数的情况。
其中,当某月的文件,添加填充空白的代码。
具体calendar.php号输出前填充空白占位。
继续编写需要在1实现如下。
行5行代码用于判断当前日期为上述第41号,且对应的星期不是星期日时,执行第如添加空白代码填充空白。
这里是通过合并单元格的方式实现,当然还可以采用其他方式,占位符。
样式,参考效果如图所示。
CSS为了让年历的展示更加的精美,可按照个人喜好设置。