夏至日计算公式及“三伏”的日期算法问题

本文介绍了一种计算夏至日期的简易算法,并解释了三伏天的定义及其日期计算方式。通过具体年份示例展示了如何应用这些算法。

今天是6月21日,农历夏至日,这一天为一年中白天最长,晚上最短。

夏至日为二十四节气中最早确定下来的农历节气,为每年公历的6月20日、21、22日中的一天。用程序如何快速计算出来呢?

算法公式:

INT(Y * D + C) - L, 为简化记忆,使用:[Y * D + C] - L

其中:Y=年数后2位,D=0.2422,L=闰年数;

C:21世纪C=21.37,20世纪=22.20。

[Y * D + C] 为取整数

闰年数L=INT(Y/4)。
这里:INT为取整数函数

举例说明:

今年是2017年,夏至日期 = [17 * 0.2422 + 21.37] - [17 / 4] =INT(25.4874) + INT(4.25) = 25 - 4 = 21

2088年夏至日期=[88 × 0.2422 + 21.37] - [88 / 4] = 42 - 22 = 20,那么2088年,公历6月20日为夏至。


三伏的日期算法:

“三伏(Dog Day)”是初伏、中伏和末伏的统称,是一年中最热的时节。每年出现在阳历7月中旬到8月中旬。其气候特点是气温高、气压低、湿度大、风速小。“伏”表示阴气受阳气所迫藏伏地下。

按我国阴历(农历)气候规律,前人早有规定:“夏至后第三个庚日开始为头伏(初伏),第四个庚日为中伏(二伏),立秋后第一个庚日为末伏(三伏),头伏和末伏各十天,中伏十天或二十天,“三伏”共三十天或四十天。

今年的头伏是7月13日,除正常中伏外,还有一个闰中伏,所以今年的三伏有四十天。

实验内容:万年历 实验目标: (1)日期查询:输入公历年、月、,能够查询该天是星期几,农历日期。如果是节气、节,同时显示出来; (2)月历显示:输入公历年、月,列出该月月历,包含农历日期节气、节信息; (3)年历显示:输入公历年份,设计一种格式,能够较美观地列出该年12个月的年历,包含农历日期节气、节信息。 日期查询数据样例: 输入:2025 1 31 输出:星期五 正月初三 输入:2025 3 5 输出:星期三 二月初六 惊蛰 输入:2025 8 1 输出:星期五 闰六月初八 建军节 输出:2019 2 4 输出:星期一 腊月三十 立春 除夕 说明:各输入输出项之间,均以空格分隔。 如果不是节气与节,输出农历日期后结束,后面不留空格。 其中,农历月份为正月、二月、三月、四月、五月、六月、七月、八月、九月、十月、冬月、腊月,前面可能有“闰”字; 农历日期为初一、初二、…、初十、十一、十二、…、十九、二十、廿一、廿二、…、廿九、三十。 节气共24个,节除必须包含法定节外,其余自定。 解决方案: 输入是公历日期,输出包含四部分:星期几,农历日期节气,节。 按照公历日期计算星期几,查阅资料可以直接得到计算公式。 但是从公历日期得到农历日期、准确的节气不存在确定的公式可以计算。 至于节,有些由日期确定(比如五一节、国庆节由公历日期确定,除夕、春节、端午节、中秋节、重阳节由农历日期确定,而清明节就是节气),其余均与日期无关(比如春社、秋社、三伏、三九均与干支纪有关)。 本任务不考虑与日期无关的那些节,只需考虑由公历日期农历日期节气确定的节。 由历法知识可知,推算农历日期需要准确的天文资料,可简单理解为无法直接按照公历日期计算得到农历日期。 但显然,农历日期与公历日期存在关联,只是关联过于复杂而难以借助于简单公式计算得到。 这种情形,需要利用计算机强大的数据存储能力,将天文台的计算结果,以较为简洁的方式保存在程序中,即可借助于快速“查询”和简单计算得到所需输出数据。 子任务1:星期几 (1)说明按照公历日期能够计算星期几的原理; (2)写出按照公历日期计算星期几的程序。
06-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值