经过多天的折腾,终于将Liferay Calendar Portlet打造成一个完美支持多种历法(目前界面上支持GregorianCalendar和ChineseCalendar)的一个组件了。
折 腾的初衷是因为目前所有的日历组件中,很多都有定期提示功能,但是都只是在GregorianCalendar,也就是我们用的公历上,比如每年几月几 日。 而我们国内还有很多事情是用农历的,比如好友的生日,很多人的生日都是只过农历生日。这样就给惦记他/她的人造成很大的麻烦,经常记不住今年生日到底是哪 天(目前只见过一个叫掌上万年历的软件支持农历生日提醒)。还有其他周期的农历重复事件就更难以实现了,比如,每个农历的初一的提醒等等。
在当前这个网站的Calendar组件中也支持农历了,但是支持的很不好,只能实现每年定期,而不能实现其他的重复条件。
偶 尔间发现了ibm的一个开源组件,ICU (International Components for Unicode),这是一个实现国际化的基础工具包,其中就包含关于各种历法的支持。而且更爽的是其API设计是完全按照JDK Calendar的命名来的,也就是说JDK Calendar有的api, ICU都有,类名也相同。通过继承实现了不同历法的支持。
(这 里不得不感慨一下,这种国际大公司的竞争力确实不是我们一些本土企业所能比拟的,他们在很多领域遇到的问题是我们没有遇到过的,而且他们多积累的这些基础 代码,以及里面所相关的知识更是很难在短时间内能获得的。虽然我们可以通过各种开源工具来弥补与这些巨头之间的差距,但是,对于这些开源工具的掌握本身就 不是一个容易的事情。另外,外国公司对于我们中国的农历的知识积累丝毫不逊于我们国内一些研究机构,