现在的位置: 首页 > 综合 > 正文

寿星天文历Java封装整理版

2018年01月24日 ⁄ 综合 ⁄ 共 1900字 ⁄ 字号 评论关闭

由于生活和工作的原因,“寿星天文历”我一直没有动,长时间的丢弃后,当重新拾起时,比较费劲。编程就是这样,思维的火花只在当初的那一瞬,一旦熄灭,重新再点燃断掉的思维是很困难的。因为人的“忘记”能力,真的是挺强的,有时回顾或维护以前的代码时,常常会感叹道:这是我写的吗?够牛逼,看不懂!呵呵,这时候注释的作用的凸显出来了,尽管如此有时仅仅靠注释找以前的思路也是很困难。

跑题了,那么,首先对于等着“寿星天文历”封装整理版代码的各位,说声抱歉。这回整理的代码,修复了部分小bug和线程安全问题,同时整理的结构更易于理解,并与寿星天文历的JS原版代码的结构保持一致,以方便各位阅读和理解,本来想把变量的命名方式与JS原版一致的,但最后还是没有这么做,原因是是在看不惯JS源码的变量命名方式。注释上都有与原版变量名称的对应说明,各位想理解源码或继续完善的,就麻烦自己对照着看吧。

本次的封装版,实质上还是较为简单,没有进一步深入和挖掘,但也基本够用了。各位读者可以根据自己的需要进行进一步整理,不过再整理和改造之前,建议还是先了解下相关的知识,否则估计你都无从下手,即便改了,在不了解逻辑的情况下,也容易出错。

说明:

1. LunarCalendar对象是以月历为基准的,例如:2014年8月的月历数据。

2. LunarCalendar的所有方法都是针对于农历而言,例如getMonth方法,代表获取的是农历月的数据,而不是公历。

3. LunarCalendar实例化,默认为今天,可以指定为某天,大多数方法都是依据实例化时指定的天而返回数据的。

4. LunarDate类,是某一天的农历数据对象,并且已经拆分,而不是以前那样都混杂在一块。

5. JulianDate类,是公历数据对象。

6. LunarConstant类,是基本常量的数据对象,里面含有大量基本数据。

由于代码很多,所以我以文件的形式上传到了CSDN资源库里,博文里就不贴了。

Java源码下载地址:

http://download.csdn.net/detail/wangpeng047/7755661

测试代码:

package com.test;

import org.junit.Test;

import com.util.DateStyle;
import com.util.DateUtil;
import com.util.LunarCalendar;

public class TestLunarCalender {

	@Test
	public void test () {
//		String dateStr = "2015-2-4";
//		LunarCalendar calendar = new LunarCalendar(DateUtil.stringToDate(dateStr, DateStyle.YYYY_MM_DD));
		LunarCalendar calendar = new LunarCalendar();
		System.out.println("getAnimalString=" + calendar.getAnimalString());
		System.out.println("getDateString=" + calendar.getDateString());
		System.out.println("getDay=" + calendar.getDay());
		System.out.println("getDayString=" + calendar.getDayString());
		System.out.println("getGanZhiDateString=" + calendar.getGanZhiDateString());
		System.out.println("getMaxDayInMonth=" + calendar.getMaxDayInMonth());
		System.out.println("getMonth=" + calendar.getMonth());
		System.out.println("getMonthString=" + calendar.getMonthString());
		System.out.println("getYear=" + calendar.getYear());
		System.out.println("getYearString=" + calendar.getYearString());

		String[] strs = calendar.getAllSolarTerm();
		for (String str : strs) {
			System.out.println(str);
		}
	}
}

抱歉!评论已关闭.