久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

關(guān)于中國日歷部分算法---摘自別人Blog

 [email protected] 2010-05-17
本文是對最近做歷法研究時寫的 CnCalendar 單元的算法總結(jié)與說明,。
目前還是草稿,,缺農(nóng)歷算法部分。

======================================================================
1. CnCalendar 介 紹
======================================================================

    CnCalendar 旨 在為國內(nèi)外程序員尤其是 Delphi/C++Builder 程序員提供一開放源碼的歷法計算工具包,,此包涵蓋了公歷農(nóng)歷節(jié)氣干支生肖星座數(shù)九三伏出梅 入梅日出日落等各個方面,,雖然力求做到完整精確,,但歷法本身的復(fù)雜性和天文現(xiàn)象的不確定性決定了這里的計算不會太完善。為了給用戶一個完整的使用說明以及 使用戶在發(fā)現(xiàn)問題時能通過閱讀 CnCalendar 的代碼解決問題,,這里將 CnCalendar 的歷法算法說明整理如下文,。

======================================================================
2. CnCalendar 算 法說明
======================================================================

    本 節(jié)對 CnCalendar 所使用的算法進行了詳細說明,歡迎閱讀并指出謬誤之處,。

----------------------------------------------------------------------
2.1 概 念與常識介紹
----------------------------------------------------------------------

    進 行歷法計算前,,有一些概念是需要首先明確的,包括歷法本身的概念,、部分天文名詞,、公歷年、月,、日,、時的定義等,CnCalendar 算法中所涉及的概念 都會在本節(jié)中加以說明,。值得一提的是,,部分概念是屬于天文現(xiàn)象、部分則是歷法推演而來,,一般根據(jù)前者修正后者,。前后兩者擬合的精確度,是評判歷法準確與否 的依據(jù),。

2.1.1 陽歷,、陰歷、陰陽歷
------------------------

    太陽和月亮 是對人類生產(chǎn)活動影響最大的兩個天體,,因此歷法基本上都是以日和(或)月的運行規(guī)矩為依據(jù)來計算的,,純粹以太陽的運行規(guī)律來計算的歷法稱為陽歷,純粹以月 亮來計算的則稱為陰歷,,兩者兼而有之的自然就是陰陽歷了,。公歷是典型的陽歷,回歷是陰歷(本文未涉及),,中國的農(nóng)歷則是陰陽歷,。

2.1.2 歷 理的依據(jù)
----------------

    歷法的作用有兩個,一是能精確計時(或者說是計日),,二是要符合實際情況,。這 個實際情況包括很多內(nèi)容,如季節(jié)更替,、農(nóng)耕活動,、潮汐漲落等。實際情況造就了歷法,歷法反過來又應(yīng)當能根據(jù)其規(guī)則去推演實際情況,,這便是歷法的最終目的,。 目前通用的公歷是 1582 年制定的格里高利歷(Gregorian),它在前身儒略歷(Julian)的一年 365 日,、四年一閏的基礎(chǔ)上增加了百 年不閏,、四百年又閏的規(guī)矩,,形成了現(xiàn)在的通用公歷歷法,。格里高利歷是以數(shù)值計算為歷理依據(jù)的,換句話說,,按照格里高利歷的數(shù)值計算規(guī)則,,可以往前后推任意 多的天數(shù)而計算出當時的公元年月日來,至于是否符合實際情況,,則只有到時候瞧著辦了,。像格里高利歷的前身儒略歷就出現(xiàn)過硬算下去誤差積累導(dǎo)致春分日提 前 10 天的事故,不過令人放心的是,,太陽與地球的相對活動情況比較穩(wěn)定,,儒略歷只是擬合得不甚精確,而修改后的格里高利歷的精確度提高了許多,,至少能 支持三千年(如果加上四千年又不閏的規(guī)則則可以撐幾萬年了),。這也說明,只要歷法所根據(jù)的天文情況比較固定,,歷法就可能推演成簡單數(shù)值計算的公式,。公歷正 是如此。
    中國的農(nóng)歷計月所依據(jù)的是月亮的運行規(guī)則,,月亮的不穩(wěn)定度比太陽高得多,,而農(nóng)歷是天文歷法,其原則規(guī)定了以實際情況為準,、數(shù)值計 算為輔,,所以導(dǎo)致了中國歷史上的多次修歷,更導(dǎo)致了目前農(nóng)歷計算和公農(nóng)歷轉(zhuǎn)換的復(fù)雜性,。而且農(nóng)歷這個陰陽歷還必須考慮到太陽周期(回歸年)和月亮周期(陰 歷月)的配合,,更產(chǎn)生了十九年七閏的規(guī)則,而閏月的確定還需要以節(jié)氣為準,,大大增加了計算的復(fù)雜度,。后文會詳細說明。

2.1.3 春分 點,,回歸年,,陰歷年
----------------------------

    地球是斜著繞太陽轉(zhuǎn)的,所以赤道面和黃道 面有個固定的夾角,這個夾角在地球公轉(zhuǎn)過程中導(dǎo)致了太陽直射點在南北回歸線間移動,,因此造就了四季更替,、形成了年的概念。注意年的概念比發(fā)現(xiàn)地球繞太陽轉(zhuǎn) 要久遠得多,,年對古人的直觀感受就是四季更替和春種秋收,,這個感受和地球是否公轉(zhuǎn)是無關(guān)的。假想如果地球光自轉(zhuǎn)不公轉(zhuǎn)而太陽在垂直于黃道面的方向上來回移 動,,同樣也能造就年的感受,。——說明這點的目的是為了區(qū)分下面所描述的概念:恒星年和回歸年,。
    地球精確繞太陽轉(zhuǎn)一周的時間稱之為恒星年,, 而四季更替的精確時間稱之為回歸年。那么怎樣衡量四季更替的精確時間,?這就要用到春分點的概念,。春分點是天文概念,它是黃道面上的地球公轉(zhuǎn)軌道和赤道面的 兩交點之一(另一個自然是秋分點了),,春分秋分點時太陽正好直射赤道,,而太陽的直射又正好符合四季更替的感受要求,因此回歸年的定義就是地球從這個春分點 轉(zhuǎn)一圈又回到春分點的時間,。
    如果春分點不動,,恒星年就等于回歸年,因為地球轉(zhuǎn)一圈又回來了,。遺憾的是地軸總會像陀螺一樣有進動和章動,,所 以導(dǎo)致的歲差會讓春分點在一年中稍微前進一點點,因此一恒星年比一回歸年要長那么一點點,,一個是 365.25636 日,,一個 是 365.2422 日。記住,,回歸年才是我們通常概念中的年,。
    也許有人要問,恒星年和回歸年有 20 多分鐘的差距,,長此累積下去會 有什么影響,?答案是“和歷法無關(guān)”。歷法中本來就不管地球在公轉(zhuǎn)軌道上的位置,,春分點秋分點的平分——冬至點和夏至點也和公轉(zhuǎn)軌道上的近日點遠日點沒什么 必然關(guān)系,,所以關(guān)心恒星年和回歸年的差距是天文學(xué)家的事情。太陽歷的基礎(chǔ)就是回歸年,。
    至于陰歷年,,則沒有什么天文意義,,只是月的集合而 已,不過在農(nóng)歷這個陰陽歷中,,它也得擬合回歸年的長度,。一農(nóng)歷年是從正月初一到次年正月初一前的時間,它可能包含 12 或 13 個月,,取決于閏年的設(shè) 定,。
    農(nóng)歷中還有“歲”的概念,是從冬至日到次年冬至日之間的時間,等于一回歸年,。這個概念用來計算閏月,。

2.1.4 陽 歷月,,農(nóng)歷月
--------------------

    陽歷月同樣沒有什么天文現(xiàn)象和它對應(yīng),,設(shè)置陽歷月只是為了便于把 年分割計時,所以儒略歷時能隨便將月份的日期調(diào)大調(diào)小,,只要保持一年的天數(shù)不變就行,。像七八月連大、二月特小等都是歷史上遺留下來的問題,。
    農(nóng) 歷月則不同,,農(nóng)歷的月是陰歷月,,反映了月相的變化,也就是月球繞地球公轉(zhuǎn)一周的周期,。農(nóng)歷規(guī)定了月朔時的那日為農(nóng)歷月首初一,,下個月朔時為下個月月首初 一,。由于月球的公轉(zhuǎn)周期差不多是 29.5 天但月必須是天的整數(shù)倍,因此農(nóng)歷月有大有小,,大月 30 天,,小月 29 天,,而且也間隔得無規(guī)律可循,,也 就是說沒法在不參考月相又脫離年份的情況下直接算出某個農(nóng)歷月的大小來,這一點和公歷是不同的,。

2.1.5 日,,平太陽日
------------------

    日 是地球自轉(zhuǎn)帶來的晝夜交替,,時,、分、秒都脫胎于它,。以往日的定義是真太陽日,,也就是在地面上觀測到的太陽視點繞地球一周又回到天球上天頂位置的時間間隔, 這個間隔和地球精確自轉(zhuǎn)一周的時間(恒星日)有點差別,,因為地球還在公轉(zhuǎn),,位置有點變化,,其原理類似于春分日前進導(dǎo)致的回歸年和恒星年的差距,。另外地球的 黃赤夾角以及橢圓軌道上的公轉(zhuǎn)速度不均勻也導(dǎo)致了真太陽日的長短在一年中有所區(qū)別,為了消除這個差別,,歷法中引入了平太陽的概念,。“平”在歷法中是指時間 均勻分布的意思,,平太陽則是一個假想的太陽,以均勻的速度在天球赤道上繞地球運動,,其速度的精確值為真太陽在一回歸年內(nèi)的平均速度,并且和真太陽同時經(jīng)過 近地遠地點,這個平太陽運行一周回到天頂?shù)臅r間則定義為一平太陽日,,也就是現(xiàn)在通常的日的概念,。換句話說,,地球一年內(nèi)的自轉(zhuǎn)轉(zhuǎn)速分布和公轉(zhuǎn)情況共同決定了 一平太陽日的實際大小。
    至于時,、分,、秒,最初都是由平太陽日的定義衍生而來的:1 平太陽日等分為 24 小時,,1 小時等分 為 60 分鐘,,1 分鐘等分為 60 秒。而后來由于地球自轉(zhuǎn)不均勻?qū)е碌钠教柸盏木_度不高,,便另起爐灶以其他更精確的手段規(guī)定秒的長度,,則是以后 的事情了。

2.1.6 節(jié)氣
----------

    節(jié)氣是對一回歸年內(nèi)陸球公轉(zhuǎn)軌道上的 24 個具有季 節(jié)意義的等分位置的描述,,這 24 個節(jié)氣名這里就不贅述了,,只是這個“等分”也有說法:中國古代采用平氣,按時間等分一回歸年,,相鄰兩節(jié)氣之間時間間隔 固定,。清代修歷后改用定氣,等分周天為 24 分,,每 15°為一個節(jié)氣,,這樣相鄰節(jié)氣的時間間隔由于地球公轉(zhuǎn)速度的變化會有所不同。
    24 個 節(jié)氣中包括 12 個節(jié)氣和 12 個中氣,,奇數(shù)號為節(jié)氣,,存在于每公歷月上旬,偶數(shù)號為中氣,,存在于公歷月下旬,。中氣對陰歷的閏月計算起著決定性的作 用。
    本文的節(jié)氣計算和中國現(xiàn)代農(nóng)歷一樣使用定氣,。而古代使用的平氣,,其交節(jié)時刻和根據(jù)定氣計算推得的時刻會有較大的誤差,計算時應(yīng)予注 意,。

2.1.7 年月日時的天干地支
------------------------

    中國采用天干地 支計法來計年月日時,,十天干十二地支循環(huán)配成六十花甲再輪排,年月日時都有和其對應(yīng)的干支,。計算年月日時的干支俗稱“算八字”,,當然本文的算八字是指根據(jù) 年月日時推算出干支數(shù),,并非根據(jù)推算出來的四個干支再算命運財運桃花運等,那已經(jīng)不屬于本文討論的范疇了,。

----------------------------------------------------------------------
3.1 歷 法算法分類
----------------------------------------------------------------------

    在 說明算法之前,,一些約定俗成的說法需要說明一下:

  * 公元前 n 年表示為 -n 年,公元 0 年不存在,。
  * 不存在 公元 1582 年 10 月 5 日到 14 日這 10 天
    (被 Gregory 刪掉了),,但星期和干支仍然連續(xù)。
  * 計 算而得的干支,、生肖,、星座、節(jié)氣的數(shù)字描述均以 0 為起始,。
  * 求回歸年內(nèi)第 N 個節(jié)氣交節(jié)時刻時,,第 1 個代表小寒,
    這 里無第 0 個的說法,。

    CnCalendar 目前的歷法算法包括:

  * 星期
  * 公歷年月日時 的干支
  * 節(jié)氣的公歷交節(jié)時刻
  * 星座
  * 日出日落時刻的計算

    下面對各個算法分開進行簡要 說明,。具體實現(xiàn)可以參考 CnCalendar 中的代碼,里面也有較為詳盡的注釋,。

3.1.1 計算星期
--------------

    CnCalendar 提 供了根據(jù)公歷年月日計算星期幾的方法,,算法來源于《新編萬年歷》一書的公元日數(shù)求余法(有細微修改),原理很簡單:星期的 7 天排列是和具體歷法無關(guān) 的,,只按照日數(shù)循環(huán)計算,,因此只要知道某個公歷年月日距某個參照日的天數(shù)和此參照日的星期數(shù),便可通過 7 求余法計算出公歷年月日的星期幾來,。
    算 法中,,距公元 1 年 1 月 0 日(公元前 1 年 12 月 31 日)的日數(shù)等于兩部分之和:基礎(chǔ)年日數(shù)和閏年修正日數(shù)。前者等于和公元 1 年 的年份差乘以 365 再加上今年此日距今年 1 月 0 日的日數(shù)(包括此日本身,,每個閏年里多出的 1 日也計算在內(nèi)),。后者等于年份差對 4 求余 再減去個修正值。
    年份差是該年和公元 1 年的實際年份差距,,當 N 為正時,,公元 N 年的年份差為 N - 1,公元前 N 年的年 份差為 N(因為無公元 0 年),。
    修正值是對儒略歷和格里高利歷切換期間的日期調(diào)整和對百年不閏四百年又閏規(guī)則的調(diào)整之和。其值規(guī)則如 下:

    * 日期為 1582 年 10 月 5 日之前(含 5 日,,以下同)時為 0,。
    * 日期 為 1582 年 10 月 15 日至 1700年 12 月 31 日時為 10。
    * 從 1701 年 1 月 1 日起增 加 1,,每增加一個世紀再加 1 ,,
      但能被 400 整除的世紀不累加,。如 1801 年元旦后修正值為 12,
      1901 年 元旦后修正值為 13,,2001 年元旦后修正值仍為 13,。
      2101 年元旦后才為 14。

    算出實際日期 后,,減去 2,,再對 7 求余,得到的即是星期值,,0 對應(yīng)星期日,,1 對應(yīng)星期一,由此類推,。這兒減去 2 是因為公元 1 年 1 月 2 日才是星 期天(0 日是星期五,,因此 -2 也可用 +5 代替)。

3.1.2 計算干支
--------------

    計 算年月日時干支的原理和計算星期差不多,,因為其連續(xù)性,,都可以用求余法來計算。不過中國用來計算干支的年月概念和公歷年月不同,,年以立春為界,,月 以 12 節(jié)氣為界,計算前公歷的年月需要轉(zhuǎn)換成傳統(tǒng)中國歷法的年月,。

3.1.2.1 年干支

    計算年干支需要公 歷年月日三參數(shù),,無月日參數(shù)則默認認為是立春之后的某日,這樣不需要調(diào)整年份,。如有月日參數(shù),,則判斷其是否處于本年立春交節(jié)時刻之前,之前則屬于去年,,年 份減一,。得到轉(zhuǎn)換的年份后,假設(shè)為 Year,,如其大于 0,,則干支數(shù)為 (AYear - 1 - 3) mod 60,其中 Year - 1 為到 公元 1 年的年份差,,Year 為負數(shù)則根據(jù)無公元 0 年調(diào)整為 (AYear + 1 - 1 - 3) mod 60,,這個 -3 源于公 元 1 年是辛酉年,而辛酉在六十花甲的 0 ~ 59 中排行 57,。

3.1.2.2 月干支

    公歷月份的干支 數(shù)雖可以用求余法來計算,,不過因為一年的月份數(shù)等于地支數(shù),和天干數(shù)的關(guān)系也比較簡單,因此有更簡便的口訣算法(口訣來源于《新編萬年歷》一書,,網(wǎng)上也有 類似文章),。首先仍然需要根據(jù)當年的立春和各個節(jié)氣交節(jié)時刻來調(diào)整年月數(shù),然后計算出本年干數(shù),,年干數(shù)和本年首月月干數(shù)有口訣對應(yīng),,這里把冗長的口訣簡化 了一下寫在注釋里,用代碼描述如下:

  case Gan of // 根據(jù)口訣從本年干數(shù)計算本年首月的干數(shù)
    0,5: // 甲 己 丙佐首,,
      Result := 2;
    1,6: // 乙庚 戊為頭,,
      Result := 4;
    2,7: // 丙 辛 尋庚起,
      Result := 6;
    3,8: // 丁壬 壬位流,,
      Result := 8;
    4,9: // 戊 癸 甲好求
      Result := 0;
  end;

    現(xiàn)行農(nóng)歷規(guī)定正月為寅,。得到首月的干支數(shù)后,便可 序次推得該月干支數(shù),。

3.1.2.2 日干支

    日干支和星期的計算有類似之處,,按星期計算的法子算得公元日數(shù)后, 加 12 再對 60 取余則得到當日的干支數(shù),,12 源于公元 1 月 0 日是丙子日,,而丙子在六十花甲的 0 ~ 59 中排行 12。

3.1.2.3 時 干支

    一天 24 小時對應(yīng)著 12 個時辰,,時辰和干支對應(yīng),,但時辰的分界卻不嚴格對應(yīng)著日的分界。前一日 23 時到本 日 1 時為子時,,1 到 3 時為丑時,,依此類推。
    時干支和月干支的計算類似,,首先根據(jù)小時數(shù)轉(zhuǎn)成時辰數(shù),,如果是 23 時以后,則日 期調(diào)整為后一天,。接著計算出本日干數(shù),,本日干數(shù)和本日子時干數(shù)也有簡單的對應(yīng)關(guān)系,不過這次沒找到口訣,,大概因為對應(yīng)比較簡單,。此對應(yīng)關(guān)系用代碼描述如 下:

  case Gan of
    0,5:
      Result := 0;
    1,6:
      Result := 2;
    2,7:
      Result := 4;
    3,8:
      Result := 6;
    4,9:
      Result := 8;
  end;

    可 以簡化成:

  if Gan > 4 then
    Dec(Gan, 4);
  Gan := 2 * Gan;

    所 以不需要口訣了。
    得到子時干數(shù)后,,便可序次推得本日內(nèi)時辰的干支數(shù),。

3.1.3 計算節(jié)氣
--------------

    節(jié) 氣的定義雖然簡單,可要計算出比較精確的交節(jié)時刻卻并不容易,,原因就是春分點在一回歸年內(nèi)會有細微移動,,所以太陽兩次通過各個定氣點的相隔時間并不是一精 確回歸年,,便沒法以 365.2422 日為周期來直接計算各個節(jié)氣的時刻。CnCalendar 的算法移植自中國日歷類中作者根據(jù)曾次亮著作而擬合的 節(jié)氣算法,,考慮到了地球自轉(zhuǎn)的進動與章動,因此平氣定氣的精確度據(jù)作者說能達到 10 分鐘左右,。

3.1.4 計算星座
--------------

    星 座計算比較簡單,,僅僅根據(jù)月日就可以確定黃道十二宮的對應(yīng)數(shù)值,規(guī)則如下:

    01.20 - 02.18:水瓶座
    02.19 - 03.20: 雙魚座
    03.21 - 04.20:白羊座
    04.21 - 05.20:金牛座
    05.21 - 06.21: 雙子座
    06.22 - 07.22:巨蟹座
    07.23 - 08.22:獅子座
    08.23 - 09.22: 處女座
    09.23 - 10.22:天秤座
    10.23 - 11.22:天蝎座
    11.23 - 12.21: 射手座
    12.22 - 01.19:摩羯座

    但黃道十二宮以白羊居首,,所以代碼中返回的星座序號中 0 對應(yīng)著白 羊,,水瓶雙魚分別是 10、11,。
    另外星座名稱有不同說法,,如摩羯又稱山羊、水瓶又稱寶瓶,,射手又稱人馬,、天秤又稱天平等,這里只采用比 較常用的說法,。

3.1.5 計算農(nóng)歷
--------------

3.1.5.1 農(nóng)歷歷法詳細規(guī)則

    中 國的農(nóng)歷在 1929 年以前以北京當?shù)氐慕?jīng)度 116°25′為計算基準,,之后以北京時間也就是東經(jīng) 120°的東八區(qū)標準時間為計算基礎(chǔ)。農(nóng)歷有四條 基本規(guī)則:

    1. 月朔時刻所在之日定為農(nóng)歷月初一,。
    2. 如某節(jié)氣交節(jié)時刻落于初一本日內(nèi)(0 時后 到 24 時前),,
       即使其交節(jié)時刻早于月朔時刻,也算落在此月中,。
    3. 冬至必須出現(xiàn)于農(nóng)歷十一月內(nèi),。
    4. 相 鄰的冬至交接時刻間(歲內(nèi))如出現(xiàn) 13 次月朔也就是 12 個完整
       的農(nóng)歷月,則此歲稱為閏歲,,此歲中有一個月需要設(shè)置成閏月,。
       因 為期間必然有 12 個中氣,所以至少有一個農(nóng)歷月沒有中氣落入其
       中,,閏歲內(nèi)第一個沒有中氣的月份定為閏月,,月份數(shù)與前一月相同。

    對 于第四條規(guī)則,,需要強調(diào)的是年內(nèi)和歲內(nèi)兩個的概念是不同的,,如出現(xiàn)歲內(nèi)有兩個農(nóng)歷月無中氣的情況,則以第一個為閏月,,而此閏月可能不會落在本年內(nèi),。而如果 歲內(nèi)有一農(nóng)歷月無中氣但本歲只有 12 次月朔也就是 11 個完整的農(nóng)歷月的情況下,那個無中氣的月并不會被置閏,。典型的例子是 2033 年 閏 11 月:2033 農(nóng)歷年第 8 個農(nóng)歷月和第 11 個農(nóng)歷月都無中氣,,但因為 2032 農(nóng)歷年冬至(11 月)到 2033 農(nóng)歷年冬至 (11 月)間只有 11 個完整的農(nóng)歷月,,所以不是閏歲,無需加入閏月,。2033 年冬至(11 月)到 2034 年冬至(11 月)間有 12 個 完整的農(nóng)歷月,,所以是閏歲,以冬至日后出現(xiàn)的第一個無中氣的農(nóng)歷月為閏月,,正好是 11 月后面的一個農(nóng)歷月,,于是就閏 11 月。
    總的 說來一句話,,無中氣只是閏月的必要條件并非充分條件,,只有歲內(nèi)月朔太多需要置閏月時,才會尋找歲內(nèi)第一個無中氣的作閏月,。舊版歷法以 2033 年 第 8 農(nóng)歷月為閏 7 月,,只因為它是年內(nèi)第一個無中氣的農(nóng)歷月,并未考慮到是否閏歲的情況,。新版已經(jīng)改為了閏 11 月,。
    另外,由于 目前節(jié)氣采用定氣,,地球在遠日點時運動速度慢,,導(dǎo)致中氣在冬天里推遲比夏日里慢,因此無中氣的月份大多都落在夏天前后,,幾百年來極少有出現(xiàn)閏 12 月 的,,這基本保證了春節(jié)的唯一。農(nóng)歷歷法的精妙可見一斑,。
    注:中國現(xiàn)代的歷法以南京紫金山天文臺發(fā)布的內(nèi)容為權(quán)威,。如本文的闡述和該權(quán)威有 沖突,以該權(quán)威為準,。

3.1.5.2 農(nóng)歷計算

    從上文的農(nóng)歷規(guī)則來看,,農(nóng)歷完全是天文歷法,加上月亮運動規(guī)律的 不穩(wěn)定,,導(dǎo)致很難對其進行精確計算,。目前權(quán)威的計算方法是根據(jù)天文觀測數(shù)據(jù)建立月球、地球,、太陽的運行數(shù)學(xué)模型來精確計算各個朔日與中氣的時刻再加以歷法 推算,。
    (待補充)

3.1.6 計算數(shù)九與三伏
--------------------

    數(shù) 九也稱九九,是從冬至日開始的 81 天,,每 9 天稱為一個九,,第 10 天稱為二九第一天,冬至日本身是一九第一天,。CnCalendar 中計算某 公歷年月日的九九數(shù)時首先算出本年的冬至日,,如果此日在冬至日開始后的 81 天內(nèi),,則表明在九九日內(nèi),可通過整除求余等求出是幾九的第幾天,。如果此日落 在本日冬至日前,,則檢查是否處于上一年的冬至日的 81 天后,是則再計算一遍,,因為九九日一般都會跨越兩個公歷年的交界時,。
    伏日的計算 稍微復(fù)雜點,按傳統(tǒng),,每年夏至后的第三個庚日(天干)起的 10 天為初伏,夏至后的第四個庚日起為中伏,,如果第五個庚日落在立秋前則中伏算 20 天,, 否則 10 天,立秋后的第一個庚日起的 10 天為末伏,。另外計算庚日時夏至立秋本身不計算在內(nèi),,也就是說如果夏至日本日是庚日,它的后 10 天才算 第一個庚日,,立秋與此相同,。

3.1.7 計算入梅出梅

    入梅和出梅是指江南一帶梅雨季節(jié)的開始和結(jié)束,入梅日規(guī)定 為芒種之后的第一個丙日(天干),,出梅日則是指小暑之后的第一個未日(地支),,和上面的類似,計算日的天干地支數(shù)時芒種和小暑本日同樣不計算在內(nèi),。

3.1.8 計 算日出日落
------------------

    該部分算法移植自“時間科普網(wǎng)站”,,此處無法詳細闡明。

======================================================================
3. 參 考內(nèi)容與致謝
======================================================================

    CnCalendar 的 開發(fā)主要參考了以下內(nèi)容,,在這里對作者們的無私奉獻表示敬意,。

  * 《新編萬年歷》,實際有百年左右,,包括一些歷法說明與計算,。
  * “知 來者”日歷源碼以及“中國日歷類”源碼,JavaScript 編寫,,
     節(jié)氣算法自此移植而來,。
  *  林洵賢的萬年 歷 JavaScript 源碼,參考,。
  * “日梭萬年歷”5.2 beta 版,,用來核對部分計算結(jié)果。
  * “時間科普網(wǎng) 站”:http://www.,,
     日 出日落計算代碼自此移植而來,。

 
本來以前以為陽歷轉(zhuǎn)陰歷的算法可能并不難,今天有個網(wǎng)友給了段代碼給我一看,,我就暈了,,才知道陰 歷算法這么的復(fù)雜,然后我就將這個網(wǎng)友給的代碼收藏了一下,。以備后用 [razz] 
真恐怖,,沒有點深厚的數(shù)學(xué)知識還真沒有辦法寫出完整的算法,中國的文化果然博大精深,,牛X牛X [sweat] 
http://www./uploads/200605/10_233851_.rar

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多