新疆一般去新疆最好的季节是什么时候间日出,去新疆最好的季节是什么时候间日落?


酒盅故事汇
2023-01-31 19:47
·湖南
0
日出而作,日落而息是古人的生活习惯。由于现代照明、娱乐设备的出现,人们的睡眠习惯也在不断的发生转变。很多人的入睡时间都已经延迟到了10点之后,甚至凌晨12点之后。而这显然是无法满足人体养生需求的。
打开网易新闻 查看精彩图片
为什么日出而作,日落而息有助养生?这里不得不提的是十二时辰养生法。古人将一天内的时间划分为12个时辰,而中医认为人体内的精气也和这十二个时辰相互呼应,在人体内不断的游走。能够顺应这种时辰的变化来养生,对健康更有好处。而早晨起床的时间大约是卯时,也就是现在所说的5-7点左右,为大肠经当令的时辰。在这段时间内起床,能够较好的促进肠道运转,通过晨起排便来代谢掉一整夜的睡眠中产生的废物。还可以通过活动四肢,“鸣天鼓”等方式来养生。日落而息大约是晚上的戌时,19点至21点左右,心包经当令,尽快的让自己平静下来,泡脚、洗漱等活动都能让自己安静下来,并且做好睡眠前的准备,更快的进入睡眠,让身体得到足够的休息。能够顺应这样的时辰规律来养生,也能结合身体的器官运转来调节健康状况,更好的保护人们的健康。但很多人不知道的是,十二时辰养生法不仅包括日出而作,日落而息。吃饭、睡眠、运动、锻炼都有适合的时间,感兴趣的可以学一学。
打开网易新闻 查看精彩图片
十二时辰养生法,并不难在这里,我们按照从早到晚的时间来看看有哪些养生的方法值得学习。凌晨的11点至1点:子时宜养胆《黄帝内经》中有言道“十一藏取决于胆”,意思就是人体内大约有11个内脏都依赖于胆经。当人们能够在1-3点的时候进入深度睡眠,也能保证胆经运行顺畅,更好的参与人体内的代谢循环。凌晨1点至3点:肝经得令,切忌伤肝在这个时间段内不是说准备睡觉就行了,更重要的是要处于深度睡眠中,才能让肝脏得到更多的血液滋养,帮助肝脏代谢人体内的物质。如果你总是超过这个时间还没有睡觉,甚至在晚上还在喝酒伤肝,时间长了,肝脏也会慢慢受到损伤。
打开网易新闻 查看精彩图片
早晨的7点至9点,养胃正当时吃早餐之前先喝一小杯温开水,能够促进人体内的血液循环,并且通过营养均衡的早餐为身体补充营养,并且尽可能的要清淡,避免加重肠胃的负担。午时不仅是吃午饭的时间,也是午休的时间上午的11点至下午的1点之间,都是心经当令。午饭能为人们补充能量,弥补一上午的脑力活动消耗掉的营养。而吃晚饭后,就适合午睡一会儿,半个小时的午觉能让大脑、心脏得到足够的休息,得到更多的血液滋养。
打开网易新闻 查看精彩图片
下午的3到5时,是膀胱经当令。多喝水,能够促进身体内的代谢、排出。通过排尿的方式来带走堆积的代谢废物和垃圾,从而保护膀胱。虽然这些活动看起来不起眼,但是在一定的时辰做好这些事情,确实能够对健康养生有不小的好处。如果你能做到,健康或许能因此受益。参考资料:1、日出而作日落而息 教你中医十二时辰养生法·中国日报网·2014-11-22、古人的长寿秘诀:十二时辰养生法,抓住时辰养身体·中医健康养生杂志·2020-8-303、养生分时间,简单明了的十二时辰养生经,不同时间养好不同脏腑·齐鲁壹点·2020-6-2
特别声明:本文为网易自媒体平台“网易号”作者上传并发布,仅代表该作者观点。网易仅提供信息发布平台。
日出而作,日落而息是人类长久以来发展的规律,是与人体最为符合的生活作息,但是随着近现代人们生活习惯的改变,生活节奏逐渐加快,人的饮食,睡眠都是极为重要的一件事情。那么今天给大家详细地介绍一下关于睡眠的知识,什么时间睡,每天睡多久对身体才是比较好呢?能睡到自然醒是一件幸福的事情,如果有一个充足的睡眠,人的一天也会有一个更好的状态,对于一些要求精神集中的职业更是十分严重的一件事,比如大巴车司机和工厂的员工,很有可能会发生一些意外事故。睡眠是生命的需要,是自然规律,如果违背规律,就会受到规律的惩罚,睡眠的时间也有一个标准,既不可以太短,也不可以太长,人的睡眠时间最好控制在7-8的小时。如果睡得太少或太多,很容易出现一些疾病。人的睡眠疾病主要分为三大类:1、睡得太少,失眠,不少人都有失眠的困扰,尤其是一些处于极大压力之下的人群。2、睡得太多,嗜睡,虽说睡觉是一件很舒服的事情,但是如果睡觉的时间太长,反而会导致头晕,精神不振的现象。3、睡眠中容易出现的一些异常活动,比如梦游,做梦,惊醒,这些活动都会导致睡眠质量出现问题,所以也是比较严重的睡眠疾病。不同年龄段的人睡眠时间和什么时间睡也不一样,较为科学的睡眠时间应该是这样:1、儿童:对于儿童来说,睡眠时间应该控制在晚上8点半之前睡觉,保持12个小时左右的睡眠时间,这是因为儿童正处于脑部发育期,睡眠可以促进脑部的正常发育。2、青少年:在22:00左右睡觉是比较合适的时间,保持9个小时左右的睡眠,这样就会使他们保持一个精神饱满的状态。3、成年人:21:00左右睡觉,保证有7-8小时的睡眠时间。如果长期熬夜会让内分泌失调,并且睡眠时间过多和过少都不好。4、老年人:20:00左右睡觉,控制6-7个小时的睡眠时间。因为老人新陈代谢减慢,所以可以适当的减少睡眠。这些睡眠时间适合于大多数人,有些个例还需要分开讨论,其实通过一些方法可以有效地帮助睡眠质量的提高,比如睡觉之前可以通过散步来促进血液循环,还可以喝一杯热牛奶来促进睡眠,还有就是可以听一些舒缓的轻音乐来帮助睡眠。(责任编辑:麦琼璇 )过敏性鼻炎能否通过脱敏治疗治愈?
针灸在脑梗的康复治疗上有何作用?
容易失眠怎么办?吃什么药物好
开心过冬,跟皮肤说拜拜!
其实,睡觉并不是倒在枕头上,盖上被子合眼一宿,再睁开眼睛醒来这么简单,它是一个复杂的渐变过程。在睡眠中,人体首先进入慢波睡眠期,后是快眼……详细>>
在炎热的夏天,一到晚上就会热得睡不着。这时人们就会给自己寻找清凉的方式,譬如开风扇吹冷气,当然也会把床上用品换成凉席。正如不是所有人可以……详细>>
睡眠是人每天必不可少的环节,可以让身体和大脑得到休息、修复和保持活力。睡眠不足不仅会让人缺乏精力、精神匮乏、注意力无法集中,还会对身体健……详细>>
每个人都是独一无二的,不仅是对于基因或者外貌个性,对于睡姿,每个人也都有其各自的特点。有些人喜欢仰着睡,有些人喜欢侧着,还有一些人习惯趴……详细>>
70%的产妇生完孩子的第1年总是出现睡眠不足的情况,一旦睡眠不足就会下降性的抵抗力和免疫力,导致各种疾病接踵而来,同时也会增加体重,不利……详细>>
1、学院(部)数学科学学院题 目日出日落时间以及月相月相查询系统设计论文提交日期26日出日落时间以及月相查询系统设计摘要日月变换是生活中常见的两种天文现象,日出日落与人们的生活作息密切相关,而月相中的朔望月是中国农历制定的基础。本文在前人的研究基础上,利用数值逼近的方法计算了各纬度的日出日落时间,并且在ELP-2000/82月球运行理论的基础上,以特征月相出现的时间为基准点得到各地不同时间的月相。最后设计了能够查询一个日出日落时间以及月相的系统。该系统以网页形式呈现,并且模拟了该系统在服务器上发布以及通过客户端访问的过程。关键词:日出日落时间,月相,算法AbstractThe change of 2、the sun and the moon is the two common astronomical phenomenon in life. The sunrise and sunset are closely related to the life of the people, and both the new moon and the full moon, which are a kind of phrases of the moon, is the basis for the Chinese lunar calendar. On the basis of previous studie3、s, this paper uses the method of numerical approximation to calculate time of the sunrise and sunset of each latitude, and on the basis of the theory of ELP-2000/82 lunar operation, the phase of different locations, different time is obtained based on the occurrence time of characteristic moon phase4、s. Finally, a system for querying a sunrise, sunset time and moon phase is designed. The system is presented in form of webpage, and it simulates the process of the system being released on the server and accessed through the client.Keywords: The Times of Sunrise and SunSet; Phrases of the Moon; Alg5、otithm目录第1章前言31.1背景知识31.2研究现状3第2章 系统设计42.1 系统设计目标42.2 需求分析42.2.1 输入输出分析42.2.2 数据处理流程分析52.3 详细设计52.3.1 数据类的设计52.3.2 日出日落时间计算62.3.3 月相计算82.3.4 网页设计11第3章 模拟发布11第4章 改进措施及设想13第5章 总结13主要参考文献14致谢14附录15第1章 前言1.1 背景知识在我国古代,人们遵循着“日出而作,日落而息”的作息规律,在年复一年对日月运行规律的观察下,先人们制定了兼有阳历年和阴历月的历法,称为中国农历。中国农历是阴阳合历,在制定的时候需要同时考6、虑太阳和月亮的位置,是对日月运行规律的一种反映。比如,中国农历中二十四节气的变化就是一种对太阳运行规律的反映,而农历中最基础的农历月则是根据月相的变化规律制定的,严格地以日月合朔,即新月发生的时刻作为农历月中的初一。此外,在当代城市发展过程中,道路系统是必不可少的,那么道路照明系统的重要性不言而喻,在设计城市道路照明系统的过程中,为了保证安全性,需要在日落之前打开路灯,日出之后关闭路灯,此外,在最大化利用资源的同时,又需要保证路灯开关时间与日落日出时间相差不大。再者,各城市地理位置不同,导致了日出日落时间不同,因此,如何计算不同地理位置不同日期下的日出日落时间是设计智能路灯控制系统的关键。1.7、2 研究现状日出日落以及月相变化作为最常见的天文现象,在很久之前,人们就已经对其变化规律有过深入研究,尤其是天文技术得到充分发展的当代,其变化规律已不再是什么秘密。如在VSOP行星理论体系中给出了计算行星日心黄经的周期项系数表(L表)、计算行星日心黄纬的周期项系数表(B表)和计算行星和太阳距离的周期项系数表(R表),将这个理论应用在地球上,可以计算出某个时间太阳相对地球的位置,在这个基础上可以计算出日出日落时间。在研究地月关系上,应用比较广泛的是ELP2000-82月球理论体系,该理论是M. Chapront-Touze和J. Chapront在1983年提出的一个月球位置的半解析理论,和其它8、的半解析理论一样,这个理论也包含一套计算方法和相应的迭代周期项。ELP-2000/82月球理论共包含37862个周期项,其中20560个用于计算月球经度,7684个用于计算月球纬度,9618个用于计算地月距离。该理论被提出之后,出现了很多基于该理论的改进或简化理论,Astronomical Algorithms一书的第四十五章就介绍了基于该理论的一种改进算法,其周期项参数都是从ELP-2000/82理论的周期项参数转换来的,并且忽略了影响比较小的周期项。用该方法计算出来的月球黄经精度只有10,月球黄纬精度只有4”,但是在以天为单位查询月相时,这样的精度已经足够,更何况这种方法计算速度还很快。在9、本文所设计的日出日落时间以及月相查询系统中,使用了一种已经成功应用在城市路灯监控系统中的计算方法来计算日出日落时间,而对于如何计算月相,采用了Astronomical Algorithms一书中计算特征月相(即新月,半满上下弦月和满月)的算法,在此基础上计算某个时间段的月相。第2章 系统设计2.1 系统设计目标日出日落时间以及月相查询系统主要功能是能够查询不同地理位置下的不同日期的日出日落时间以及当天的月相。该系统在形式上设计为一组网页,即一个网站。并且该系统可以根据输入的不同经纬度以及日期反馈出相应的正确结果,并且所得结果与真实值误差不能太大。当该系统设计完毕之后,将网站发表于服务器上,并且10、能够通过客户端的浏览器访问该网站。由于条件所限,该过程也可以通过利用PC机作为模拟服务器,通过浏览器访问该网页。由于JSP页面可以被预编译,且能够很容易的和静态模板(如HTML)结合以及开发者很容易对源代码进行更新,故利用JSP技术进行网站的设计。在编译器方面,选择使用Eclipse这一软件,并且在其上加载Tomcat组件,这可以很容易地在设计过程中模拟网站发布之后的状态,便于网站的测试和修改。在网站设计结束之后的模拟测试上,同样选择Tomcat作为模拟服务器进行测试,具体配置过程见第三章。2.2 需求分析2.2.1 输入输出分析由于该系统可以根据不同地理位置以及日期给出相对应的日出日落时间以11、及月相,可以得知该系统的输入至少有两个:经纬度以及日期情况,输出应该为当地日出日落时间以及对应月相。该过程在网站中表现为如何利用网页收集数据,对此,仿效一些网站登录界面的设计,使用表单传递数据(即经纬度和日期)。然后在其他的jsp页面处理所获得的数据,通过计算获得日出日落时间以及月相,并在网页上打印出来。2.2.2 数据处理流程分析获得确定的经纬度以及日期之后,需要根据已有的算法给出日出日落时间以及月相。但是经纬度和日期可以有很多种表示方式,为了简化系统的设计,需要对输入的格式作出一些限制。比如将东西经和南北纬用地理上标准表示法代替,将具体度数统一化为以度为单位以及限定输入的日期格式。由于表单12、传递的数据格式一般为文本格式(可视作字符串处理),在算法过程中需要将这些数据转化为数字格式并且考虑到有其他操作的可能,所以直接建立两个数据类,在类里面定义处理文本数据(也即字符串)的方法以及其他可能用到的所有方法。将经纬度以及日期格式化之后,通过引用计算日出日落时间和月相的算法给出最终的结果。为了保证jsp页面的简洁以便于扩展和维护,将动态部分的算法(这里指计算日出日落时间以及月相的算法)写成一个Java类,并利用JavaBean技术在jsp页面中使用涉及到的所有类。2.3 详细设计2.3.1 数据类的设计在需求分析中我们经过分析知道需要设计两个数据类用来格式化表单传递的文本数据。由于表单传递13、的数据类型为字符串,在这两个数据类中需要将字符串转化为对应的数据。我们假设将地理位置存储在GeoPoint类中,将时间信息存储在Date类中。在类GeoPoint中必须有属性表示经度和纬度,分别命名为glong和glat,对于如何区分南北纬和东西经,我们假定北纬和东经数值为正,否则数值为负数。在类Date中,需要有表示年月日的基本属性分别命名为year,month,monthDay,若需要对该类进行扩充以表示更加准确的时间可额外加上hour,minute,second等属性表示一天中的时分秒。在这两个数据类中,需要定义方法,将表单传递的字符串类型的数据转化为数字类型的数据,假定表单传递过来的地14、理位置信息为“40N120E”,时间信息为“2001-1-1”,经过初始化之后,在类GeoPoint中,glong值为120,glat值为40,具体过程为:将字符串做为一个字符数组,分别提取数字和字母,以字母做为正负标志,然后给对应属性赋值;在类Date中,year值为2001,month值为1,monthDay值为1,其他一些属性默认为0,具体算法为:利用Java字符串分割方法Spring.split(),以“-”做为分割符分割字符串,得到年月日对应的字符串,最后转化为数字,给对应属性赋值。此外,在数据类中,可以根据其他的要求设计一些特殊的方法,比如在天文计算方面常常会涉及到天文儒略日的计算15、。所以在Date类中预先设计将格里历(即我们所说的公元纪年)转化为儒略日期的方法如下:设Y 为给定年份,M 为月份,D 为该月日期。一般来说,如果所求日期精确到某天的具体时间的时候,将不足一天的时间长度化作以天为单位的小数。也就是说D是带小数的该月日期。若M > 2,Y 和M 不变,若 M =1 或2,以Y1 代Y,以M+12 代M,换句话说,如果日期在1 月或2 月,则被看作是在前一年的13 月或14 月。对格里高利历有:A = INT(Y/100)B=2-A+INT(A/4)对儒略历,取B = 0所要求的儒略日即为: 该方法可用于计算正数年和负数年的儒略日期。该方法在Astronom16、ical Algorithms一书的第七章可以找到。1具体的数据类的代码见附录GeoPoint和Time。2.3.2 日出日落时间计算一般地,人们把太阳从地平线升起的时刻定义为日出时刻,太阳从地平线落下的时刻定义为日落时刻。但是由于大气折射的影响,此时太阳的实际位置在地平线之下。这也是导致北半球日落最早时刻在12月初而不是冬至日,日出最早时刻在6月初而不是夏至日的原因。因此,在计算日出日落时间的时候需要考虑到大气折射导致的误差。下面这个计算模型通过引入日出日落时刻太阳相对参考平面的角度修正了大气折射对结果的影响。首先,假设地球为球形,日出日落时圆盘形太阳的上沿刚好到达地平线,此时,以观察者所在17、地平面为参考面,太阳位置为-0.833°(计算时间时采用时间角计算方式,即180°=12h)。2计算日出日落时刻时,首先假设太阳位置为12h即180°,用这个进行第一次运算,然后将计算之后的结果作为新的太阳位置,再次代入迭代,直到符合要求(即满足要求的精度)。具体步骤如下:已知:日出日落时太阳的位置h-0.833°,要计算地点的地理位置,经度Long,纬度G1at,时区zone,UTo为上次计算的日出日落时间,第一次计算时UTo180°。(1)先计算出从格林威治时间公元2000年1月1日到计算日天数days(可以将其看做以2000年1月1日为起18、点的儒略日期,以便于计算2000年之前的日期到2000年1月1日的天数,以负数表示); (2)计算从格林威治时间公元2000年1月1日到计算日的世纪数t, 则 (3)计算太阳的平黄径 : (4)计算太阳的平近点角 : (5)计算太阳的黄道经度 : (6)计算地球的倾角 (7)计算太阳的偏差 (8)计算格林威治时间的太阳时间角GHA:(9)计算修正值e:令 则e的计算方法如下: (10)计算新的日出日落时间: (其中“+”表示计算日出时间,“-”表示计算日落时间) (11)比较UTO和UT之差的绝对值,如果大于0.1°即0.007小时,把UT作为新的日出日落时间值,重新从第(2)步开始19、进行迭代计算,如果UTo和UT之差的绝对值小于0.007小时,则UT即为所求的格林威治日出日落时间; (12)上面的计算以度为单位,即180°=12小时,因此需要转化为以小时为单位表示的时间,再加上所在的时区数Zone,即要计算地点的日出日落时间为: 本文在设计查询系统时默认为北京时间,即Zone默认为8。2该方法在计算中低纬度的日出日落时间时准确度很高,计算高纬度日出日落时间时结果误差大于中低纬度。当计算位置位于西半球或者南半球时经度Long为负数,纬度Glat为负数。该方法误差已被证实相差结果不到1分钟。3将该方法用Java语言写出具体的实现过程。在Java中,写一个日出日落时间20、计算函数实质上是写一个所有过程函数(指计算中间参数的方法)构成的计算类,设这个类的类名为SunRiseSet。对上述算法的过程实现如下(具体代码见附录SunRiseSet):(1) 计算到公元2000年1月1日天数,为了方便计算,我们在计算过程中将日期转化为儒略日期计算。因此,计算日期与2000年1月1日相差的天数就是两者对应的儒略日之差.(2) 按照算法步骤计算相关参数,这部分基本上按照算法给出的公式计算即可。(3) 循环迭代求出UT。将每次求出的UT作为UTO重新开始计算,直到满足精度要求,即相邻两次计算结果只差不超过0.1。在参考文献2中给出了实现该算法的C+代码,并且在CSDN博客上也21、能够找到实现该算法的Java方法(具体地址见附录SunRiseSet类)。然而,参考文献中的代码虽然简洁但是存在一定的错误,例如在实现循环迭代这一过程时,其将UT的初值设为0,使得第一次迭代结束之后UTO的值为0,而不是第一次迭代中计算得到的UT的值,这实际上是以初值为0开始迭代,而不是180。要解决这个问题只需要在循环迭代之前先进行一次迭代并判断是否符合精度,若不符合则进入循环迭代的过程。在CSDN博客上找到的代码,其正确性已经得到验证,但是实现过程很复杂,不利于阅读和维护,并且观其算法只能求解日期在2000年1月1日之后的某一天的日出日落时间。综合以上两种代码优缺点,我在设计系统的过程中,22、主要借鉴了参考文献中的C+代码,将其改写成了Java语言,并且在这个过程中修正了循坏迭代中的错误,并借鉴了儒略日期的计算过程,改进了计算天数部分的代码,与CSDN博客中的比较,该算法可以求解日期在2000年以前的某天的日出日落时间。经过验证,改进之后的算法误差仍然在1分钟以内。该算法详细实现代码见附录的SunRiseSet类。2.3.3 月相计算在考虑如何计算月相时,考虑了以下两个模型:其一,月相的更替周期约为29.53天,如果能够知道一个周期月相的变化,那么只要确定某天的月相,便可以根据周期变化得到距离该日任意天数的月相;其二,假如知道一个月相周期以及如何计算新月发生时刻,计算距离待计算日期23、最近的新月发生时候,两个时刻之差表示的就是新月发生时刻到所求月相经过的时间,比如,新月发生在3月3日凌晨,那么3月4日凌晨的月相就是月相周期中在新月之后一天的月相,即我们所称的娥眉月。考虑到我们计算月相以天为单位,如果要通过周期变化得到精确的结果,最小的月相周期应为2953天的月相,周期跨度过长且无法找到相应数据,如果以29.5天作为一个周期,误差随着天数的增大而变大。因此,选择模型二,并且为了减少天数相差过大所造成的误差,计算一个月内特征月相新月,半满上弦月,满月,半满下弦月发生时刻,以距离待计算日期最近标志月相为基准点,通过时间差找到月相。下面给出计算月相的模型。首先是计算四个特征月相:新24、月,半满上弦月,满月,半满下弦月,这四个特征月相发生时刻按照精确定义是指月亮视黄经与太阳视黄经相差为0°,90°,180°,270°的时刻。计算这些月相发生的时刻就需要计算日月视黄经(可以忽略章动的影响,因为黄经章动对星体影响一致,计算日月视黄经之差时消去)。计算方法来自Astronomical Algorithms一书第四十七章1,其中的公式基于Chapronts ELP-2000/82 月亮理论,以及Bretagnon和Francou的VSOP行星理论的太阳计算部分。计算过程如下:(1) 计算特征月相发生时刻代表参数k, 其中year是带小数点的十进25、制数,例如1987.25表示1987 年3 月末(因为这0.25年是从1987年的年首起算的)。对计算所得k的值向下取整得到新月发生时刻,在此基础上,k 的值增加了0.25,为平半满上弦月时刻;增加了0.50,为平满月时刻;增加了0.75,为平半满下弦月时刻。(2) 计算从J2000.0起算的儒略世纪数T: T在J2000.0之前是负数,(J2000.0表示2000年的儒略日期)(3) 计算平月相产生时间JDE:(4) 计算JDE时刻的角参数:i. 太阳的平近点角 ii. 月亮的平近点角 iii. 月亮的维度参数 iv. 月亮轨道升交点经度 v. 行星的参数 (5) 视月修正参数的计算:一般我26、们所说的月相都是视月相,而在天文计算中往往得到的是平月相。通过周期项计算所得结果为平月相发生时刻,如果要得到视月相发生时刻,需要加上视月误差。要计算真月相(视月相)发生的时刻,请对JDE 加上下面的修正,以日为单位在半满上弦月时,需要加上修正W,下弦时需要减去修正W,W的计算公式如下: 此外,计算所有月相的视月相时还需要加上修正量An/1000000,其中An为以下参数的和: 这样我们就能够给出特征月相(视月相)的具体发生时刻。我们计算某一天的月相,即月相待定,但是知道该月相发生的时刻。在本次设计的月相查询系统中,将一天的月相定义为该日零点时刻的月相。计算待定月相所在的月相周期的特征月相的发生27、时刻,计算待定月相发生时刻与四个时刻的日期差,找出绝对值最小的那一项以及对应特征月相,待定月相即为距离该特征月相时间跨度为日期差的月相(日期差为负数表示待定月相在特征月相之前)。在实际设计过程中,不可能把每时每刻的月相全部录入,因此选取一个月相周期中有代表性的月相(即以天为间隔选取月相),一共选取了30张月相图片,按照月相变化顺序排列并编号为1-30,其中首尾月相都是新月,这符合月相周期为29.53天这一特征。此时我们将所得日期差除以24小时四舍五入取整,以此表示天数差。但是,考虑到计算特征月相的过程中存在误差,也就是说通过两个新月时刻差所得到的月相周期与真实月相变化周期相比存在误差,为了减小28、误差,我们需要修正日长时间,找到和待定月相相邻的两个特征月相的发生时刻,计算这两个特征月相之间的日期差,并统计这两个月相之间经历过的月相个数n,用/(n+1)来代替24小时作为日长作为分数来给出天数差,在这个基础上找到月相编号。具体的实现代码见附录MoonPhrase。2.3.4 网页设计在网页设计上,只需要设计一个数据收集页面和一个处理输出页面即可,此外还可以增加错误处理页面比如404页面。数据经由收集页面通过表单传递给处理页面,在处理页面引用JavaBean(即附录以及上文中涉及到的Java类)得到结果。在收集页面index.jsp中经纬度在表单中直接输入,至于日期的输入,为了规范化输入选29、择使用js插件WdatePicker,可以在网页上选择所要输入的日期,该插件置于目录My97DatePicker下。在处理页面Calcu.jsp中,引用编写的Java类输出结果,日出日落时间可以直接作为字符串输出,而月相的计算结果为对应月相的编号,需要在Calcu.jsp中打开相应的月相图片,其中月相图片存放在目录Moon_img下。并且在处理页面中使用了try-catch结构,保证了在输入错误的情况下能够对错误进行处理。具体详见附录。第3章 模拟发布在Eclipse中建立Web工程Web_design,在目录src下建立包com.Des,所编写的所有的需要用到的JavaBean(也就是Jav30、a的类)都在该包下面。下载并安装Tomcat组件之后运行页面index.jsp进行测试。经过多测试以及修正之后,待网站设计完善之后,将工程Web_design导出为WAR包。在官网上下载Tomcat7.0的压缩包,解压之后运行bin目录下的startup.bat即可模拟服务器的运行。在运行Tomcat7.0之前需要在本机上安装Java并且配置好相关内容。确定Tomcat能够正常运行之后,将其关闭,在目录webapps下导入之前的WAR包,当Tomcat再次运行的时候,会自动进行解包,生成网站目录。下面配置Tomcat服务器,以保证可以通过域名访问到发布的网站。打开位于conf目录下的serve31、r.xml文件将Connector标签中port号改成80,即将端口号改成80端口。配置Host标签下Context标签为,docBase为网站目录名称。之后运行Tomcat,可以在浏览器的地址栏中通过输入localhost访问。若要通过局域网访问,则需要在路由器上建立IP地址与服务器映射。若要在本机上通过其他域名访问,则需要修改hosts文件下的域名与IP地址的映射,并32、且将sever.xml中的localhost改成相对应的域名。本文采用本机发布-本机访问的方法模拟网站的发布。在配置好Tomcat之后,在浏览器地址栏中输入localhost,按回车后出现数据收集界面如下: 输入过程如下:选择日期之后(这里选择5月30日),将连续输出所选日期前后各15天,一共31天的结果,为避免占用太多空间,这里只展示首尾两周的结果: 从该结果可以看出,2018年5月15日和6月14日月相为新月,并且在2018年的农历上,这两天为初一,由于制定农历时严格地以新月发生的时刻所在日为每月初一,因此可以证明月相的计算结果可信。第4章 改进措施及设想对于数据收集页面,可以加入一些典型33、城市,通过选择这些城市给出该城市对应的结果。具体实现方法可以将城市及其对应经纬存入数据库中,然后通过JSP访问数据库,获得对应的经纬度,再通过计算得到相应的结果。在此基础上们可以对网站功能进行扩展,比如点击城市名称时,可以得到该城市下属辖区的具体的日出日落时间,这需要经纬度的精确表示。再者打开网页时能够定位到访问地址所在地区,并显示当地天气情况等。甚至可以给网站加上根据经纬度给出城市名称以及显示在地图上的位置的功能。这些功能并不属于日出日落时间以及月相查询系统的必要功能,因此在本文不予实现。第5章 总结本文所设计的日出日落时间以及月相查询系统能够查询不同地理位置的不同日期的日出日落时间以及当天34、月相。该系统可以作为其他系统的一个模块应用于不同的情况下,例如,如果要设计一个系统用来制作农历,就可以调用该系统的月相计算部分;此外,该系统还可以应用于天气预报系统中用来给出相关信息。在设计系统的过程中,对城市路灯监控系统中日出日落时间算法的实现(即参考文献2)一文中给出的计算日出日落时间的C+代码进行了修正,改正了其中循环迭代的错误后应用到系统的设计中。对Astronomical Algorithms一书第四十七章中计算月相的算法进行了扩展,与其相比,本系统中计算月相的算法可以日期给出相应的月相,而不仅仅只能够计算特征月相的发生时刻。然而,本文在设计上也有些许不足,比如算法的原理是基于一些半35、解析理论,相当于使用了数值逼近的方法得出结果,在结果上存在着微小误差,不适用于精度要求很高的天文方面的运算,若要求更加精确的结果可以通过日月地三者位置关系以及开普勒行星定律得到。主要参考文献1Meeus,Jean.Astronomical algorithmsM.Richmond:Willmann-Bell,Inc,1991:59-67,319-3242 景春国 舒冬梅 顾德英. 城市路灯监控系统中日出日落时间算法的实现D. 现代计算机(专业版), 2003. 3 陈素君.计算月出和日出日落的几种数学模型J.现代职业教育,2016(34):38-394 赵海兰 徐继明 徐建华. 经纬度路灯控制36、器的设计与研究D. 照明工程学报, 2011.致谢从2017年末选题到2018年五月初,经历了紧张又短暂的五个月。这五个月来,我查阅了很多资料,了解了相关的天文知识,也粗略的学习了如何利用JSP技术开发网页,以及如何搭建服务器。我最感激的就是我的导师刘枫老师,选题结束后,他指导了设计的方向,以及最终成果的模板并且不厌其烦的修改论文。在这里我要向刘枫老师表示衷心的感谢。其次我还要感谢这大学四年每一个教过我的老师,他们为我展示了优秀的思维能力以及良好的编程基础。最后,我要向每一个帮助过我的同学表示感谢,感谢他们的鼓励和帮助。附录该附录收录了系统设计过程中使用的JavaBean以及网页主体部分的代码37、。一、 网页主体代码(1) 数据收集页面主体部分代码
经纬:


日期:&39、lt;input type="text" name="date" value="格式:xxxx-xx-xx" onclick="if(value=defaultValue)value=''this.style.color='#000'" onBlur="if(!value)value=defaultValue;this.style.color='#999'" style="color:#999" class="Wdat40、e" onFocus="WdatePicker(lang:'zh-cn')"/>


(2) 处理页面主体部分代码<% trygeoPoint.Initialize(request.getParameter("Lng_Lat");time.getDate(request.getParameter("date");int img_num;String path;%> <% time.minDays(15); for(int i=0;i<31;i+) img_num=get_MoonPhrase.get_moonPhrase(geoPoint,time); path="Moon_imgm"+img_num+".jpg" %>
日期日出时间日落时间月相
<%out.println(time.year+"-"+time.month+"-"+time.monthDa44、y); %> <%out.println(get_SunTime.getSunrise(geoPoint, time); %> <%out.println(get_SunTime.getSunset(geoPoint, time); %> align="middle">
<%catch(Exception e)%>
<%out.println("Exception occurs!n"); %>

<%out.println("Error input"); /print the root cause %>

<% e.printStackT46、race(); /print the info of function stuck. %>
二、 使用的JavaBean代码1. 数据类代码1.1 经纬度类GeoPointpublic class GeoPoint double glong=0,glat=0;publ47、ic void Initialize(String sourceStr)char temp=new char10;int temp_i=0;char arr=sourceStr.toCharArray();for(int i=0;i='0'&&arri<='9'|arri='.')temptemp_i+=arri;continue;elseif(arri='N')glat=Double.parseDouble(String.copyValueOf(te48、mp);temp=null;temp=new char10;temp_i=0;continue;if(arri='S')glat=-Double.parseDouble(String.copyValueOf(temp);temp=null;temp=new char10;temp_i=0;continue;if(arri='E')glong=Double.parseDouble(String.copyValueOf(temp);temp=null;temp_i=0;temp=new char10;continue;else if(arri='W'49、)glong=-Double.parseDouble(String.copyValueOf(temp);temp=null;temp=new char10;temp_i=0;public double getLongitude() return glong;public double getGlatitude() return glat;1.2 时间类Timepublic class Time private static int days_of_month_1=31,28,31,30,31,30,31,31,30,31,30,31;private static int days_of_mon50、th_2=31,29,31,30,31,30,31,31,30,31,30,31;public int year,month,monthDay;public int hour=0,minute=0,second=0;public void getDate(String Str)String sourceStr = Str.split("-");year=Integer.valueOf(sourceStr0);month=Integer.valueOf(sourceStr1);monthDay=Integer.valueOf(sourceStr2);/普通日期转化为儒略日pu51、blic double DateToJDE()double D=monthDay+(double)hour+(double)minute/60+(double)second/3600)/24;double Y=year,M=month;if(month=1|month=2) M=M+12;Y=Y-1;double A=Math.floor(Y/100);double B=2-A+Math.floor(A/4);return Math.floor(365.25*(Y+4716)+Math.floor(30.6001*(M+1)+D+B-1524.5;/以天为单位进行日期计算public void52、 addDays(int day)monthDay=monthDay+day;if(year%400=0) (year%100!=0) && (year%4=0)if(monthDay>days_of_month_2month-1) monthDay=monthDay%days_of_month_2month-1;month=month+1;if(month>12) month=month%12;year=year+1; elseif(monthDay>days_of_month_1month-1) monthDay=monthDay%days_of_mo53、nth_1month-1;month=month+1;if(month>12) month=month%12;year=year+1;public void minDays(int day)monthDay=monthDay-day;if(year%400=0) (year%100!=0) && (year%4=0)if(monthDay<=0) month=month-1;if(month<=0) month=month+12;year=year-1;monthDay=monthDay+days_of_month_2month-1; elseif(mon54、thDay<=0) month=month-1;if(month<=0) month=month+12;year=year-1;monthDay=monthDay+days_of_month_1month-1;2. 日出日落时间计算SunRiseSet类该部分代码参考自CSDN博客(public class SunRiseSet private final static double h=-0.833;/计算从2000年1月1日开始的天数public static double Daysfrom2000(Time date) Time date_2000=new Time();da55、te_2000.getDate("2000-1-1");return date.DateToJDE()-date_2000.DateToJDE();/角度规范化public static double Mod360Degree(double Degree)double degree;while(Degree<0)Degree=Degree+360;int part_int=(int) Math.floor(Degree);degree=Degree-part_int;degree=Math.floorMod(part_int, 360);return degree+D56、egree-part_int;/根据UTo计算UTpublic static double UToToUT(double UTo,GeoPoint geo,Time date,boolean RiseSet)double gha,lambda,delta,t,c,utold=UTo,utnew;double L,G,E,obl,signt,act;if(RiseSet) signt=1;else signt=-1;/到2000年的世纪数t=(Daysfrom2000(date)+utold/360)/36525;/太阳平黄经L=280.460+36000.770*t;/太阳的平近点角G=Mod360Degree(357.528+35999.050*t);/太阳的黄道经度lambda=Mod360Degree(L+1.915*Math.sin(G*Math.PI/180)+0.02*Math.sin(2*G*Math.PI/180);/地球倾角obl=23.4393-0.0130*t;/太阳时间角GHAE=-1.915*Math.sin(G*Math.PI/180)-0.020*Math.sin(2*G*Math.PI/180)+2.466*Math.sin(2*lambda*Math.PI/180)-0.053*Math.sin(4*lambda*Math.PI/

我要回帖

更多关于 去新疆最好的季节是什么时候 的文章