题外话:第一次在CSDN上发日志文章,因为一直在用的QQ空间和163博客都不支持代码段的插入,毕竟大家的定位也不同,QQ和163定位于门户性社区,所以以后还是尽量把技术性的东西往技术性社区放好了。
好了,言归正传,农历的实现一般都是自己写代码计算相关的时差,.NET 2.0则提供了一个农历的类库(看来微软终于发现中国的存在了)。这个类库在System.Globalization命名空间下,名称是ChineseLunisolarCalendar,这个类引用MSDN上的原文解释为:
将时间分成多个部分来表示,如分成年、月和日。年按农历计算,而日和月按阴阳历计算。
呵呵,“日和月按阴阳历计算”,不知道是什么意思,反正最终出来的计算结果是对的,我也没有深究。
ChineseLunisolarCalendar类提供了方法直接把当前日期换算成农历。
如常用的:
GetYear():返回了一个1到60之间的整数,至于为什么是1到60,有兴趣的可以自行了解一下农历的计算原理或者研究一下命理测算(估计研究完这个你就不用程序展示农历给你看,自己能心算了。)
GetMonth():返回一个 1 到 13 之间的整数,同理的研究一下农历计算原理或跟算命的了解一下,就知道为什么农历会有13个月。
GetDayOfMonth():返回一个从 1 到 31 的整数。
还有一些与Leap相关的方法和属性是与闰月相关的,也会经常用到。
下面看一下实际代码:
这个类并没有整理过,只是要用什么才随便写个方法,所以代码比较乱。
利用这个类,做了一个农历月历,效果如下:
月历上可以看出,没有传统节日,以后会加上。
另外也提前祝大家中秋节快乐,合家团圆!
2010-12-03
+个下载地址: