標籤:iso style 艱辛 enum file 應該 含義 glob 下一代
其實,中國的農曆是用幹支紀年法的,“幹支”即,十天幹與十二地支。
十天幹為:甲、乙、丙、丁、戊、己、庚、辛、壬、癸。
十二地支為:子、醜、寅、卯、辰、巳、午、未、申、酉、戌、亥。
十天乾的含義如下:
甲—— 草木破土而出,萬物始生。
乙—— 草木初長,即“軋”,此過程充滿艱辛,如同被碾軋一般,此過程最能考驗生命的堅韌程度。
丙—— 即“炳”,草木得到充足陽光以成長。
丁—— 陽光水分充沛,草木茁壯成長,就像一位健壯青年(人丁)。
戊—— 積木成林,樹木繁茂。
己—— 即“紀”,指草木初現名狀,可被辨識。
庚—— 即“更”,更新,從此刻起草木將要繁衍下一代,生生不息。
辛—— 嘗到收成的甘甜。
壬—— 即“妊”,孕育後代。
癸—— 即“揆”。生生死死,死死生生,周而復始。
十二地支的含義:
子—— 道生一,一生二。
醜—— 即“紐”,陰陽二氣欲合未合之勢。
寅—— 三生萬物,草木初長。
卯—— 即“茂”,草木茂盛。
辰—— 即“震”。《易》經中的【震卦】,生命因萌動而生。
巳—— 陰氣含於陽氣。草木生長態勢良好,一片欣欣向榮的景象。即將到人生顛峰。
午—— 事業有成,登上人生輝煌。
未—— 即“味”,登上事業頂峰,嘗到了功成名就滋味。
申—— 頂盛。此時要小心,亢龍有悔,盛極之後將走向衰敗,泰極否來。
酉—— 老,步入老年,此時應該開始積澱人生。
戌—— 即“滅”。死亡,一切歸於虛無。
亥—— 即“核”。新的種子即將發芽,開啟新的生命。
不管是十天幹,還是十二地支,歸結起來就是:生老病死。
在 System.Globalization 命名空間下,提供了一個基於東方文化的日曆管理類 EastAsianLunisolarCalendar,它所派生出來的類型,可用於中國、日本、朝鮮等東方國家的日曆操作。
要獲得中國農曆相關的資訊,可以使用 ChineseLunisolarCalendar 類。調用 GetYear 方法可以擷取指定西曆日期的農曆年份,GetMonth 方法返回西曆日期中月份所對應的農曆月份。當然,你還可以用 IsLeapYear 或 IsLeapMonth 方法來判斷某年某月是否為閏年 / 閏月。
此處我們要擷取年份的幹支紀年值,可以調用 GetSexagenaryYear 方法,它返回 1 到 60 的值,表示在幹支紀年中的順序。前面老周講了十天乾和十二地支的內含。幹支記時法就是把十天乾和十二地支按順序組合起來使用。比如天幹中的甲,與地支中的子組合,為甲子;依此類推,乙丑,丙寅……
這樣組合下去,正好產生60對組合,即每60出現一個甲子,因此,每一個甲子年就是相隔六十年,然後不斷迴圈。
由於這些 API 所返回的都是數值,為了讓其表示為漢字,我們可以分別為天乾和地支聲明枚舉類型。
enum 天幹 { 甲 = 1, 乙, 丙, 丁, 戊, 己, 庚, 辛, 壬, 癸 } enum 地支 { 子 = 1, 醜, 寅, 卯, 辰, 巳, 午, 未, 申, 酉, 戌, 亥 }
只需要將每個枚舉中第一個成員標記為 1 即可,後面的它會自動增加,如乙為2,丙為3……
下面代碼示範如何擷取幹支紀年。
ChineseLunisolarCalendar cncal = new ChineseLunisolarCalendar(); // 擷取農曆年份 int y = cncal.GetYear(seldate); year.Text = y.ToString(); // 擷取幹支紀年值 int a = cncal.GetSexagenaryYear(seldate); // 擷取天幹、地支 天幹 tg = (天幹)cncal.GetCelestialStem(a); 地支 dz = (地支)cncal.GetTerrestrialBranch(a); string msg = $"{tg}{dz}"; ganzhi.Text = msg;
先用 GetSexagenaryYear 方法返回指定西曆年分的幹支紀年順序(1 - 60),把順序值存到變數 a 中,然後,用 GetCelestialStem 方法從幹支紀年中獲得天乾的順序(1 - 10),因為是整數值,所以可以強制轉換為我們上面定義的 天幹 枚舉。
同理,調用 GetTerrestrialBranch 方法,擷取到幹支紀年中地支的順序(1 - 12),可以強制轉換為 地支 枚舉的值。
然後,我們可以測試一下。
先用 2017 - 6 - 2 來測試,結果如下。
我們再用 2016 - 1 - 1 來測試,結果如下。
有夥伴會問,2016年不是丙申年嗎,是的,但是,看看農曆年份,它還是2015年,16年元旦時,農曆新年還未到。
我們可以把日期改為 2016 -7 - 1 ,再看看結果。
這時候就是丙申年了。
我們可以看看明年是什麼年。
明年可以紀念“戊戌變法” 120 周年了。
好了,今天的內容就到此完成了。範例程式碼請猛點擊這裡下載。
【.net 深呼吸】擷取日期的幹支紀年