资源简介
说明:
1. LunarCalendar对象是以月历为基准的,例如:2014年8月的月历数据。
2. LunarCalendar的所有方法都是针对于农历而言,例如getMonth方法,代表获取的是农历月的数据,而不是公历。
3. LunarCalendar实例化,默认为今天,可以指定为某天,大多数方法都是依据实例化时指定的天而返回数据的。
4. LunarDate类,是某一天的农历数据对象,并且已经拆分,而不是以前那样都混杂在一块。
5. JulianDate类,是公历数据对象。
6. LunarConstant类,是基本常量的数据对象,里面含有大量基本数据。
本次的封装版,实质上还是较为简单,没有进一步深入和挖掘,但也基本够用了。各位读者可以根据自己的需要进行进一步整理,不过再整理和改造之前,建议还是先了解下相关的知识,否则估计你都无从下手,即便改了,在不了解逻辑的情况下,也容易出错。
代码片段和文件信息
package com.util;
import com.util.LunarConstant.Common;
public class JulianDate {
/** 所在公历年 */
private int year = 2000;
/** 所在公历月 */
private int month = 1;
/** 所在公历日 */
private int day = 1;
/** 所在公历小时 */
private int hour = 12;
/** 所在公历分钟 */
private int minute = 0;
/** 所在公历秒钟 */
private double second = 0;
// private final String[] weeks = { “日“ “一“ “二“ “三“ “四“ “五“ “六“ “七“ };
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public int getHour() {
return hour;
}
public void setHour(int hour) {
this.hour = hour;
}
public int getMinute() {
return minute;
}
public void setMinute(int minute) {
this.minute = minute;
}
public double getSecond() {
return second;
}
public void setSecond(double second) {
this.second = second;
}
// 公历转儒略日
private double JD(int year int month double day) {
int n = 0 G = 0;
if (year * 372 + month * 31 + Math.floor(day) >= 588829)
G = 1; // 判断是否为格里高利历日1582*372+10*31+15
if (month <= 2) {
month += 12;
year--;
}
if (G != 0) {
n = (int) Math.floor(year / 100);
n = 2 - n + (int) Math.floor(n / 4); // 加百年闰
}
return Math.floor(365.25 * (year + 4716)) + Math.floor(30.6001 * (month + 1)) + day + n - 1524.5;
}
// 儒略日数转公历
private JulianDate DD(double jd) {
JulianDate julianDate = new JulianDate();
int year month day hour minute;
double second;
int D = (int) Math.floor(jd + 0.5) c;
double F = jd + 0.5 - D; // 取得日数的整数部份A及小数部分F
if (D >= 2299161) {
c = (int) Math.floor((D - 1867216.25) / 36524.25);
D += 1 + c - Math.floor(c / 4);
}
D += 1524;
year = (int) Math.floor((D - 122.1) / 365.25);// 年数
D -= Math.floor(365.25 * year);
month = (int) Math.floor(D / 30.601); // 月数
D -= Math.floor(30.601 * month);
day = D; // 日数
if (month > 13) {
month -= 13;
year -= 4715;
} else {
month -= 1;
year -= 4716;
}
// 日的小数转为时分秒
F *= 24;
hour = (int) Math.floor(F);
F -= hour;
F *= 60;
minute = (int) Math.floor(F);
F -= minute;
F *= 60;
second = F;
julianDate.setYear(year);
julianDate.setMonth(month);
julianDate.setDay(day);
julianDate.setHour(hour);
julianDate.setMinute(minute);
julianDate.setSecond(second);
return julianDate;
}
//日期转为串
private String DD2str(JulianDate julianDate) {
String Y = “ “ + julianDate.getYear() M = “0“ + julianDate.getMonth() D = “0“ + julianDate.getDay();
int h = julianDate.getHour() m = julianDate.getMinute() s = (int) Math.floor(julianDate.getSecond() + .5);
if (s >= 60) {
s -= 60;
m++;
}
if (m >= 60) {
m -= 60;
h++;
}
String hStr mSt
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5724 2014-08-08 13:27 JulianDate.java
文件 13408 2014-08-14 16:21 LunarCalendar.java
文件 279210 2014-08-12 16:01 LunarConstant.java
文件 9186 2014-08-14 15:36 LunarDate.java
----------- --------- ---------- ----- ----
307528 4
相关资源
- javaSwing万年历小程序
- android简易万年历源码
- Jave万年历和时钟
- Java课程设计(万年历)201470
- JAVA万年历程序代码阳历+阴历+节日
- java万年历源程序
- java万年历的源代码显示农历及节假日
- Java万年历(代码及运行结果)
- JAVA实训报告万年历
- JAVA实现万年历小程序
- Java 天气预报 & 万年历(带农历)
- JAVA万年历 课程设计
- Java入门-万年历(37).zip
- HTML5手机端万年历
- android万年历源码
- Java万年历源代码,可显示公历、农历
- 万年历查询系统 Java课程设计 课程设
- java实现万年历详细jar包运行教程
- 利用javaFX写万年历
- 基于Android 万年历源码_2015年新技术
- java课程设计万年历
- 带日程提醒的万年历
- java课程设计:万年历系统的设计
- 简单JAVA语言编写的万年历系统源码图
- java 图形界面万年历源代码
- android万年历两种方法显示农历
- Android 万年历源码
评论
共有 条评论