LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2079|回复: 13

闰年的程序用perl是否更简单呢?

[复制链接]
发表于 2004-4-25 22:44:31 | 显示全部楼层 |阅读模式
发表于 2004-4-26 11:52:48 | 显示全部楼层
for (grep{$_%4==0 and $_%100!=0  or $_%400==0} 1900..2100 )
{
        print "$_\n";
}
发表于 2004-4-26 17:19:32 | 显示全部楼层
搞不明白,闰年不是能整除四的一年吗?为什么还要400等数字呢?
 楼主| 发表于 2004-4-27 13:34:39 | 显示全部楼层
最初由 Dasn 发表
for (grep{$_%4==0 and $_%100!=0  or $_%400==0} 1900..2100 )
{
        print "$_\n";
}

真的很简单:thank


最初由 devel 发表
搞不明白,闰年不是能整除四的一年吗?为什么还要400等数字呢?



  1. 一、
  2. 阳历闰年的算法:

  3. 现在通行的办法是每四年一闰,每逢百年免闰一次,而每逢四百年又恢复一闰。

  4. 地球环绕太阳一周需时:

  5.                      365天5时48分46秒
  6.                       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  7. 比365天多点儿,但不足366天,所以一年取整数365天(二月份28天);
  8. 这样每过4年,实际天数就会快接近一天(23时15分4秒),为了消除这种误差,
  9. 就把这一年的天数改为366天(二月份为29天),称做闰年!而只有365天的年份称为平年。

  10. 闰年增加了一天(24小时),比实际增加的时间:

  11.                          5小时48分46秒 X 4 = 23时15分4秒
  12.                                                ̄ ̄ ̄ ̄ ̄ ̄
  13. 多了 24小时 - 23小时15分4秒 = 44分56秒
  14.                                  ̄ ̄ ̄ ̄
  15. 又产生误差,而我们现行的办法,为方便计,定为每一百年计算,如果每四年一闰,
  16. 则每百年有二十五闰,则因闰年的调整产生的误差累积为:
  17.           100年 / 4年 X 44分56秒 = 18小时43分20秒
  18.                                        ̄ ̄ ̄ ̄ ̄ ̄ ̄
  19. 已经快半天了,需要再作调整,把百年的闰年去掉,这就是逢百不闰的道理。

  20. 而因为4年一闰,每128年就会产生闰年累积误差近一天时间:
  21.        128年 / 4年 X 44分56秒 = 32 X 44分56秒 = 23小时57分52秒
  22.                                                      ̄ ̄ ̄ ̄ ̄ ̄ ̄

  23. 每四百年之间,有3个128年,另加1个4年,实际闰年的总数为:
  24.                        400年 / 4 - 3 = 97闰
  25.                                           ̄ ̄
  26. 而按现行方法,每百年24闰,则400年有96闰,正好比实际的少了一次,所以需要
  27. 再一次作调整,在400年这个百年恢复被取消的闰年,这就是逢400年恢复闰年的理由。

  28. 注:
  29. 习俗上历法与科学理论上有些差别的;导致现行历法上,夏至、冬至的日子常因年份
  30. 而提前或挪后一天(通常冬至为12月22日);
  31. 但理论上的规则不便记忆,所以不太可能实行;


  32. 二、
  33. 阴历闰年的由来:

  34. 因为月亮环绕地球一周的时间为:29.5306天,一年是365.2422天,平价一个年为:
  35.                         365.2422 / 29.5306 = 12.37 个月

  36. 以12个月为一年,则剩下0.37个月,每2年或3年的累积后,出现了多一个
  37. 月的现象,称为成闰月;有闰月的年份称为闰年:
  38.           0.37 X 3 = 1.11

  39. 显然3年一闰已经有余数了,肯定有些是2年一闰的!

  40. :help闰月怎么算:
  41. 应该从何年开始?
  42. 0.37 X 2 = 0.74 > 0.5闰;
  43. 0.37 X 2 - 1 + 0.74 = 0.48不闰;再等一年:0.48 + 0.37 = 0.85 > 0.5闰;



  44. 三、
  45. 阴历月大月小是因为月球绕地球一周需时 29.5306 天,以29天为一个月显
  46. 小些,称做小月;以30天为一个月显得大些,称做大月:
  47.                29.5306 - 29 + 29.5306 = 30.0612

  48. :help怎么算:
  49. 从1年1月开始,一月大=30天,二月小=29天。。。
复制代码
发表于 2004-4-27 16:50:56 | 显示全部楼层
谢谢seablue!!
发表于 2004-4-27 17:15:03 | 显示全部楼层
广东天文学会的专家说,农历一年按12个朔望月计算,只有354.4天,比阳历回归年少10.9天。如果今年不安插闰二月,那么,明年春节就会出现在2005年1月10日。再过几年,农历就会出现“六月飞雪”的现象。我国春秋时代就“十九年七闰月”,即在19个回归年(6939.6天)中,农历要安插七个闰月。19个农历年有228个朔望月,再加上七个闰月,就有235个朔望月(6939.7天)。这样,就能使农历的寒暑变化与公历基本一致

闰月我也不懂,29.5306x12=354.3672
365-354.3672=10.6328


阴历月大月小是因为月球绕地球一周需时 29.5306 天,以29天为一个月显
小些,称做小月;以30天为一个月显得大些,称做大月:
               29.5306 - 29 + 29.5306 = 30.0612
小月就是29.5306x2-30=29.0612天,
这样就大月小月轮着。。
 楼主| 发表于 2004-4-28 21:09:15 | 显示全部楼层
:thank devel;)

有空的话找他们聊聊聊,再补全剩下的问题
发表于 2004-4-28 22:21:37 | 显示全部楼层
闰月是第十三个月吗?一年比12个月周期多出些时间。。
发表于 2004-4-29 00:09:24 | 显示全部楼层
最初由 devel 发表
闰月是第十三个月吗?一年比12个月周期多出些时间。。

不是,像今年就是闰二月。有中气无节气的为闰月(或者反过来,记不清了)
 楼主| 发表于 2004-11-30 08:42:22 | 显示全部楼层
    农历历法        香港天文台提供

  历法是为了配合人们日常生活的需要,根据天象而制订的计算时间方法。在中国,农业向来是经济的命脉,而农业依赖历法以计算季节的更替,因此中国采用的历法又称为农历。

  根据月球环绕地球运行所订的历法称为阴历;根据太阳在不同季节的位置变化所订的历法称为阳历;农历是涵盖月球运行规律及太阳位置变化的阴阳历。

  农历的基础是「回归年」和「朔望月」。「回归年」是太阳接连两次通过春分点所需的时间,即365.2422日(365日5小时48分46秒)。「朔望月」是月球接连两次朔(新月)或两次望(满月)相隔的时间,即29.5306日(29日12小时44分3秒)。

  对古时一般生活需要来说,以月相的变化(即新月>上弦>满月>下弦>新月)来计算日子是比较方便的方法。农历以朔为每个月的开端,这时月球和太阳的黄经相等,日食发生时必定是朔。月食发生时必定是望,这时月球和太阳的黄经相差180度。

  由于12个「朔望月」只有354.3672日,跟「回归年」的365.2422日相差超过10日,把相差累积起来便成为闰月。早在公元前五、六百年的春秋时代,中国历法便采用十九年七个闰月的安排。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    二十四节气

  二十四节气是一个统称,其中包括十二个中气和十二个节气,中气和节气相间地排列。从春分起十二个中气分别是春分、谷雨、小满、夏至、大暑、处暑、秋分、霜降、小雪、冬至、大寒和雨水,分属于十二个以地支排列的月份。春分后的节气是清明,其后的节气依次是立夏、芒种、小暑、立秋、白露、寒露、立冬、大雪、小寒、立春和惊蛰。

  春分和秋分昼夜平分,夏至昼最长(北半球,下同),冬至昼最短,春分、秋分、夏至和冬至是古人最初确立的气。其后加入的是立春、立夏、立秋和立冬。至于其他的节气,便以该段季节常见的天气现象或农业活动而命名,这些节气某程度上反映了古代中原地区的气候。

  农历规定每一个月必定要有一个中气,没有中气的月份,便成为前一个月的闰月。原来19个「回归年」共有228个中气和235个「朔望月」,即是有7个月没有中气,这些没有中气的月便正好成为闰月。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    二十四节气与黄道十二宫

        跟二十四节气相似,古代的黄道十二宫亦是以春分点为起点而把黄道分为12等份,因此占星学中十二星座的开始及结束日期或其前后一天必定是二十四节气中的中气。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表