Werden wir Helden für einen Tag

Home | About | Archive

無聊筆記: 公農曆轉換法 #1

Posted on May 9, 2013 by Chung-hong Chan

假設 2012 年 1 月 23 日是年初一,請問今天 2013 年 5 月 9 日是農曆幾月幾日。
以下是其中一種算法,市面上大部份軟件都是用類似方法計。
2013 年 5 月 9 日與 2012 年 1 月 23 日相差 472 日。 ((這個我是用電腦計的。用手計都不難。 2012 年是閏年,故此一年有 366 日。即是 2012 年 1 月 23 日與 2013 年 1 月 23 日之間有 366 日。 2013 年 1 月 23 日至 2013 年 4 月 23 日之間有 31 + 28 + 31 = 90 日。 2013 年 4 月 23 日至 5 月 9 日用數手指方法可計出有 16 日。故此就是 366 + 90 + 16 = 472 日。)) 設此值為 y 。 ( y:= 472)
2012 年龍年是有閏四月。這是事先要知道的數據。此外農曆每個月的日數不定,這也增加了計算的難度。以下是龍年的數據:
正月: 30天 二月: 29天 三月: 30天 四月: 30天 閏四月: 29 天 五月: 30 天 六月: 29 天 七月: 30 天 八月: 29 天 九月: 30 天 十月: 29 天 十一月: 30 天 十二月: 29 天
龍年的總天數就是 30+29+30+30+29+30+29+30+29+30+29+30+29 = 384 天
由於 y >= 384 天,就將 y := y - 384 天 = 88 天。設新的 y 值為 88 。
88 天之前是甚麼日子呢? 就是蛇年年初一,也即是 2013 年 2 月 10 日。
之後又找出蛇年每月的天數
蛇年正月有 30 天。由於 y >= 30 ,將 y := y - 30 = 58 (二月初一,3 月 12 日)
蛇年二月有 29 天。由於 y >= 29 ,又將 y := y - 29 = 29 (三月初一,4 月 10 日)
蛇年三月有 30 天。由於 y < 30 天,不用再減。故此 5 月 9 日在農曆三月之內。
由於三月初一是 4 月 10 日,與 5 月 9 日相距 29 日。故此 5 月 9 日就是農曆三月三十 (1 + 29 = 30)。
又假設 2012 年 1 月 23 日是年初一,請問 2012 年 6 月 4 日是農曆幾月幾日呢。
2012 年 1 月 23 日與 2012 年 6 月 4 日之間相差 133 日。 y := 133 。
龍年上面計過有 384 天。而 y < 384 ,故此 2012 年 6 月 4 日仍在龍年之內。之後是找出哪一月份。
龍年正月有 30 天。由於 y >= 30 ,將 y := y - 30 = 103 。
龍年二月有 29 天。由於 y >= 29 ,將 y := y - 29 = 74 。
龍年三月有 30 天。由於 y >= 30 ,將 y := y - 30 = 44 。
龍年四月有 30 天。由於 y >= 30 ,將 y := y - 30 = 14 。
龍年閏四月有 29 天。由於 y < 29 。故此 2012 年 6 月 4 日是在閏四月。
閏四月初一與 2012 年 6 月 4 日相差 y 日,即 14 天,故此 2012 年 6 月 4 日是閏四月十五。


Powered by Jekyll and profdr theme