寿星天文历Java封装整理版

news/2024/11/23 3:22:52/

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

跑题了,那么,首先对于等着“寿星天文历”封装整理版代码的各位,说声抱歉。这回整理的代码,修复了部分小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 {@Testpublic 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);}}
}

http://www.ppmy.cn/news/118819.html

相关文章

C语言库函数time.h中时间相关函数的功能讲解

1、C语言的标准库函数 1.1 assert.h 文件 1.2 ctype.h 文件 1.3 errno.h 文件 1.4 float.h 文件 1.5 limits.h文件 1.6 locale.h 文件 1.7 math.h 文件 1.8 setjmp.h 文件 1.9 signal.h 文件 1.10 stdarg.h 文件 1.11 stddef.h 文件 1.12 stdio.h 文件 …

astropy常用命令 python天文绘图

绘图(结合mpl) 画出图像及contour from astropy.wcs import WCS from astropy.io import fits import matplotlib.pyplot as plthdufits.open(filename)[0] wcsWCS(hdu.header)axplt.subplot(projectionwcs)#show image ax.imshow(hdu.data, vmin, vma…

天文坐标系转换

天文坐标系转换 黄道坐标系赤道坐标系银道坐标系坐标系转换转换公式 - λ \lambda λ, β ⟶ \beta \longrightarrow β⟶ α , δ \alpha, \delta α,δ转换公式 - α , δ ⟶ \alpha, \delta \longrightarrow α,δ⟶ λ \lambda λ, β \beta β 实现坐标系转换代码 黄道…

天文坐标系

天文坐标系 坐标系统地平坐标系赤道坐标系黄道坐标系银道坐标系超星系坐标系 坐标系统 坐标系统中心点(起点)基面(lat0)极坐标主要方向(Primary direction(0 longitude))纬度(Latitude)经度(Longitude)地平坐标系(Horizaonal, Alt/Az)观测者地平面天顶(Zenith)/天底(Nadir)赤纬…

上海天文馆简要攻略

一、购入馆门票球幕电影票 儿童不需购买门票,但是需要预约,球幕电影儿童也需要购买门票的。 周末人较多,票比较难抢,so决定工作日去的,可提前在公众号“上海天文馆”购买,门票9:30开放购买&am…

天文方面的python库

天文方面的python库 (本人是天文专业的,以天体物理作为例子)(火狐浏览器) 据我目前了解,天文方面的python库有: Astropy: Astropy Documentation: http://docs.astropy.org/en/stable/ G…

天文学常用python库(持续更新)

基础库(主要的支持库): numpy, matplotlib, ipython, scipy, pandas, seaborn 天文库(天文学库和宇宙学库): astropy: 基于python语言,天文数据处理中最常用的包之一。 camb:基于for…

数据结构与算法(九)

红黑树复习 图 图,是一种数据结构 集合只有同属于一个集合;线性结构存在一对一的关系,树形结构一对多的关系,图形结构,多对多的关系。 微信中:许多的用户组成了一个多对多的朋友关系网,这个关…