在 .net 中有個 System.Globalization 裡, 有許多國家的日曆可用, 像是民國年的轉換, 或是農曆年的轉換, 這個真的很有意思. 也免除了在程式中, 程式設計人員的轉換麻煩.
先來看看民國年的部分, 程式如下:
TaiwanCalendar tc = new TaiwanCalendar();
int year = tc.GetYear(DateTime.Now); //現在是西元2010年
MessageBox.Show(year.ToString()); // 會秀出 99
有趣的, 我想試看看早於 1911 年(也就是民國還未成立時, 會發生什麼事), 結果如下, 會發生一個 OutOfRangeException 如下圖:
也就是必須是西元陽曆1912/1/1 00:00:00 ~ 9999/12/31 23:59:59 才行, 否則會有 Exception.
這樣當然很合理啦. 也避免一些錯誤輸入的狀況.
另外來看看農曆, (或稱陰曆, 月亮曆), 來試看看今天是農曆的日期:
TaiwanLunisolarCalendar tlc = new TaiwanLunisolarCalendar();
int month = tlc.GetMonth(DateTime.Now);
int day = tlc.GetDayOfMonth(DateTime.Now);
MessageBox.Show(month.ToString() + "/" + day.ToString());
今天是 2010/6/29, 秀出的結果是 5/18 相當正確, 十分方便. 不過似乎沒有反過來的查法, 但有正向查詢應該就很夠用了, 反向查再稍加手腳即可.
另外也可以取出天干(GetCelestialStem()), 地支(GetTerrestrialBranch())的功能. 還有日本曆(JapaneseCalendar), 很有意思.
參考資料:
http://dotnetmis91.blogspot.com/2010/06/dotnet-systemglobalization.html
http://anita-lo.blogspot.com/2008/03/net_20.html
這篇是日本曆的年號: http://blog.csdn.net/xue1234567890/archive/2009/10/24/4723056.aspx