首页 新闻 会员 周边

根据当前时间获得季节的算法

0
悬赏园豆:10 [已解决问题] 解决于 2014-08-27 11:46

我现在需要实现一个功能,本来以为很简单,baidu下就有了,但是结果不如人意。

这个功能就是,根据当前时间,获得现在是属于什么季节,望各位给予支持,有现成的C#代码最好。

季节以立春、立秋这种为标准,谢谢!

问题补充:

谢谢各位的回答,其实我的想法是把当前的阳历转换为农历,然后根据农历计算出立春、立秋等,然后再判断季节,这种想法是否正确,可行性怎么样,但是没有找到相应的算法

Fencer的主页 Fencer | 初学一级 | 园豆:7
提问于:2014-08-27 09:14
< >
分享
最佳答案
1

立春准确时间的计算方法

计算公式:[Y*D+C]-L

  公式解读:年数的后2位乘0.2422加3.87取整数减闰年数。21世纪C值=3.87,22世纪C值=4.15。

  举例说明:2058年立春日期的计算步骤[58×.0.2422+3.87]-[(58-1)/4]=17-14=3,则2月3日立春。

      想简单的话,之后一年二十四个节气,按照每十五天为一个节气算就行了 误差就误差吧

想要没误差就继续算,立夏的计算方法[Y*D+C]-L

  公式解读:Y=年数后2位,D=0.2422,L=闰年数,21世纪C=5.52,20世纪=6.318

  举例说明:2088年立夏日期=[88×0.2422+5.52]-[88/4]=26-22=4,5月4日是立夏[1]。

  例外:1911年的计算结果加1日。

  为什么有时是5月5日却有时是5月6日,主要是看西历是否闰年,如果想容易记下,[1]只要知道奥运年份便行。

立秋的计算方法:  

  立秋日期计算公式:[Y*D+C]-L

  公式解读:Y=年数后2位,D=0.2422,L=闰年数,21世纪C=7.5,20世纪=8.35。

  举例说明:2088年立秋日期=[88×0.2422+7.5]-[88/4]=28-22=6,8月6日是立秋。

  例外:2002年的计算结果加1日。

立冬日期的计算 [Y*D+C]-L

  公式解读:Y=年数后2位,D=0.2422,L=闰年数,21世纪C=7.438,20世纪=8.218。
  举例说明:2088年立冬日期=[88×0.2422+7.438]-[88/4]=28-22=6,11月6日是立冬。
  例外:2089年的计算结果加1日。

希望能帮到你,算法不难就不帮你写了啊

收获园豆:8
狂狗A地板 | 初学一级 |园豆:121 | 2014-08-27 10:53

学习了

allon6318 | 园豆:858 (小虾三级) | 2014-08-27 12:40
其他回答(3)
0

先确定好4个季节怎么划分。

Firen | 园豆:5385 (大侠五级) | 2014-08-27 09:18
0

哥们,你想错了吧。立春,立秋这是农历啊!你要是根据农历来分四季,你是想坑死你自己么?要知道每一年的阳历和农历这个对应关系都是不一样的。最简单的划分方法是3、4、5是春季,6、7、8是夏季,9、10、11是秋季,12、1、2是冬季,这是指的阳历啊。如果你要更加准确的划分方法,那就采用天文划分四季法,就是以春分(3月21日)、夏至(6月21日)、秋分(9月21日)、冬至(12月21日)作为四季的开始。即:春分到夏至为春季,夏至到秋分为夏季,秋分到冬至为秋季,冬至到春分为冬季。知道上述划分原理,只要判断当前datetime就OK了,这个代码写出来也就分分钟的事了吧。还有,就不要根据当前IP判断地理位置考虑南北半球之分了,别扯着自己蛋疼~~~

收获园豆:2
allon6318 | 园豆:858 (小虾三级) | 2014-08-27 09:28
0

给一个参考:调用万年历来实现。

网络里有万年历的服务的,通过万年历,可以获取指定年份的四个季节的开始日期,从而判断指定日期所处的季节。

519740105 | 园豆:5810 (大侠五级) | 2014-08-27 09:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册