增加吉神方位;增加冲刹。
This commit is contained in:
29
README.md
29
README.md
@@ -1,12 +1,12 @@
|
||||
# lunar [](https://github.com/6tail/lunar/blob/master/LICENSE)
|
||||
|
||||
lunar is a calendar library for Solar and Chinese Lunar.
|
||||
lunar是一个无依赖的支持阳历和阴历的日历工具库。
|
||||
|
||||
> Support since java 1.5
|
||||
> 支持java 1.5及以上版本。
|
||||
|
||||
[简体中文](https://github.com/6tail/lunar-java/blob/master/README_ZH.md)
|
||||
[English](https://github.com/6tail/lunar-java/blob/master/README_EN.md)
|
||||
|
||||
### Release
|
||||
### 稳定版本
|
||||
|
||||
```xml
|
||||
<dependency>
|
||||
@@ -16,7 +16,7 @@ lunar is a calendar library for Solar and Chinese Lunar.
|
||||
</dependency>
|
||||
```
|
||||
|
||||
### Snapshot
|
||||
### 快照版本
|
||||
|
||||
```xml
|
||||
<repository>
|
||||
@@ -38,13 +38,13 @@ lunar is a calendar library for Solar and Chinese Lunar.
|
||||
</dependency>
|
||||
```
|
||||
|
||||
### Download
|
||||
### 下载jar
|
||||
|
||||
If you will use jars in your projects, I suggest you to download latest snapshot versions with less bugs.
|
||||
如果使用jar,建议下载最新的SNAPSHOT版本,bug将得到及时的修复。
|
||||
|
||||
[Download](https://oss.sonatype.org/content/groups/public/cn/6tail/lunar/)
|
||||
|
||||
## Example
|
||||
## 示例
|
||||
|
||||
import com.nlf.calendar.Lunar;
|
||||
|
||||
@@ -68,20 +68,19 @@ If you will use jars in your projects, I suggest you to download latest snapshot
|
||||
}
|
||||
}
|
||||
|
||||
Output:
|
||||
输出结果:
|
||||
|
||||
|
||||
丙申年捌月初八 猴年丁酉月癸巳日 北方玄武 斗木獬 彭祖[癸不词讼理弱敌强 巳不远行财物伏藏]
|
||||
贰零壹陆年捌月初八 丙申(猴)年丁酉月癸巳日 北方玄武 斗木獬 彭祖百忌[癸不词讼理弱敌强 巳不远行财物伏藏] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁亥)猪] 刹[东]
|
||||
2016-09-08 闰年 星期四 (世界扫盲日) 处女座
|
||||
|
||||
丙寅年肆月廿一 虎年癸巳月癸酉日 北方玄武 危月燕 彭祖[癸不词讼理弱敌强 酉不会客醉坐颠狂]
|
||||
壹玖捌陆年肆月廿一 丙寅(虎)年癸巳月癸酉日 北方玄武 危月燕 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 刹[东]
|
||||
1986-05-29 星期四 双子座
|
||||
|
||||
## Documentation
|
||||
## 文档
|
||||
|
||||
Please visit [http://6tail.cn/calendar/api.html](http://6tail.cn/calendar/api.html "http://6tail.cn/calendar/api.html")
|
||||
请移步至 [http://6tail.cn/calendar/api.html](http://6tail.cn/calendar/api.html "http://6tail.cn/calendar/api.html")
|
||||
|
||||
## Contact
|
||||
## 联系
|
||||
|
||||
<a target="_blank" href="https://jq.qq.com/?_wv=1027&k=5F9Pbf0"><img border="0" src="http://pub.idqqimg.com/wpa/images/group.png" alt="lunar" title="lunar"></a>
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# lunar [](https://github.com/6tail/lunar/blob/master/LICENSE)
|
||||
|
||||
lunar是一个无依赖的支持阳历和阴历的日历工具库。
|
||||
lunar is a calendar library for Solar and Chinese Lunar.
|
||||
|
||||
> 支持java 1.5及以上版本。
|
||||
> Support since java 1.5
|
||||
|
||||
[English](https://github.com/6tail/lunar-java/blob/master/README.md)
|
||||
[简体中文](https://github.com/6tail/lunar-java/blob/master/README_ZH.md)
|
||||
|
||||
### 稳定版本
|
||||
### Release
|
||||
|
||||
```xml
|
||||
<dependency>
|
||||
@@ -16,7 +16,7 @@ lunar是一个无依赖的支持阳历和阴历的日历工具库。
|
||||
</dependency>
|
||||
```
|
||||
|
||||
### 快照版本
|
||||
### Snapshot
|
||||
|
||||
```xml
|
||||
<repository>
|
||||
@@ -38,13 +38,13 @@ lunar是一个无依赖的支持阳历和阴历的日历工具库。
|
||||
</dependency>
|
||||
```
|
||||
|
||||
### 下载jar
|
||||
### Download
|
||||
|
||||
如果使用jar,建议下载最新的SNAPSHOT版本,bug将得到及时的修复。
|
||||
If you will use jars in your projects, I suggest you to download latest snapshot versions with less bugs.
|
||||
|
||||
[Download](https://oss.sonatype.org/content/groups/public/cn/6tail/lunar/)
|
||||
|
||||
## 示例
|
||||
## Example
|
||||
|
||||
import com.nlf.calendar.Lunar;
|
||||
|
||||
@@ -68,20 +68,19 @@ lunar是一个无依赖的支持阳历和阴历的日历工具库。
|
||||
}
|
||||
}
|
||||
|
||||
输出结果:
|
||||
Output:
|
||||
|
||||
|
||||
丙申年捌月初八 猴年丁酉月癸巳日 北方玄武 斗木獬 彭祖[癸不词讼理弱敌强 巳不远行财物伏藏]
|
||||
贰零壹陆年捌月初八 丙申(猴)年丁酉月癸巳日 北方玄武 斗木獬 彭祖百忌[癸不词讼理弱敌强 巳不远行财物伏藏] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁亥)猪] 刹[东]
|
||||
2016-09-08 闰年 星期四 (世界扫盲日) 处女座
|
||||
|
||||
丙寅年肆月廿一 虎年癸巳月癸酉日 北方玄武 危月燕 彭祖[癸不词讼理弱敌强 酉不会客醉坐颠狂]
|
||||
壹玖捌陆年肆月廿一 丙寅(虎)年癸巳月癸酉日 北方玄武 危月燕 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 刹[东]
|
||||
1986-05-29 星期四 双子座
|
||||
|
||||
## 文档
|
||||
## Documentation
|
||||
|
||||
请移步至 [http://6tail.cn/calendar/api.html](http://6tail.cn/calendar/api.html "http://6tail.cn/calendar/api.html")
|
||||
Please visit [http://6tail.cn/calendar/api.html](http://6tail.cn/calendar/api.html "http://6tail.cn/calendar/api.html")
|
||||
|
||||
## 联系
|
||||
## Contact
|
||||
|
||||
<a target="_blank" href="https://jq.qq.com/?_wv=1027&k=5F9Pbf0"><img border="0" src="http://pub.idqqimg.com/wpa/images/group.png" alt="lunar" title="lunar"></a>
|
||||
|
||||
@@ -22,6 +22,12 @@ public class Lunar{
|
||||
private int day;
|
||||
/** 对应阳历 */
|
||||
private Solar solar;
|
||||
/** 相对于基准日的偏移天数 */
|
||||
private int dayOffset;
|
||||
/** 日对应的天干下标,0-10 */
|
||||
private int dayGanIndex;
|
||||
/** 日对应的地支下标,0-12 */
|
||||
private int dayZhiIndex;
|
||||
|
||||
/**
|
||||
* 默认使用当前日期初始化
|
||||
@@ -41,65 +47,73 @@ public class Lunar{
|
||||
this.year = year;
|
||||
this.month = month;
|
||||
this.day = day;
|
||||
this.dayOffset = LunarUtil.computeAddDays(year,month,day);
|
||||
int addDays = (dayOffset + LunarUtil.BASE_DAY_GANZHI_INDEX)%60;
|
||||
dayGanIndex = addDays%10;
|
||||
dayZhiIndex = addDays%12;
|
||||
this.solar = toSolar();
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过日期初始化
|
||||
* @param date 日期
|
||||
* 通过阳历日期初始化
|
||||
* @param date 阳历日期
|
||||
*/
|
||||
public Lunar(Date date){
|
||||
solar = new Solar(date);
|
||||
int y = solar.getYear();
|
||||
int m = solar.getMonth();
|
||||
int d = solar.getDay();
|
||||
int startY,startM,startD;
|
||||
int lunarY,lunarM,lunarD;
|
||||
int startYear,startMonth,startDay;
|
||||
int lunarYear,lunarMonth,lunarDay;
|
||||
if(y<2000){
|
||||
startY = SolarUtil.BASE_YEAR;
|
||||
startM = SolarUtil.BASE_MONTH;
|
||||
startD = SolarUtil.BASE_DAY;
|
||||
lunarY = LunarUtil.BASE_YEAR;
|
||||
lunarM = LunarUtil.BASE_MONTH;
|
||||
lunarD = LunarUtil.BASE_DAY;
|
||||
startYear = SolarUtil.BASE_YEAR;
|
||||
startMonth = SolarUtil.BASE_MONTH;
|
||||
startDay = SolarUtil.BASE_DAY;
|
||||
lunarYear = LunarUtil.BASE_YEAR;
|
||||
lunarMonth = LunarUtil.BASE_MONTH;
|
||||
lunarDay = LunarUtil.BASE_DAY;
|
||||
}else{
|
||||
startY = SolarUtil.BASE_YEAR+99;
|
||||
startM = 1;
|
||||
startD = 1;
|
||||
lunarY = LunarUtil.BASE_YEAR+99;
|
||||
lunarM = 11;
|
||||
lunarD = 25;
|
||||
startYear = SolarUtil.BASE_YEAR+99;
|
||||
startMonth = 1;
|
||||
startDay = 1;
|
||||
lunarYear = LunarUtil.BASE_YEAR+99;
|
||||
lunarMonth = 11;
|
||||
lunarDay = 25;
|
||||
}
|
||||
int diff = 0;
|
||||
for(int i=startY;i<y;i++){
|
||||
for(int i=startYear;i<y;i++){
|
||||
diff += 365;
|
||||
if(SolarUtil.isLeapYear(i)){
|
||||
diff += 1;
|
||||
}
|
||||
}
|
||||
for(int i=startM;i<m;i++){
|
||||
for(int i=startMonth;i<m;i++){
|
||||
diff += SolarUtil.getDaysOfMonth(y,i);
|
||||
}
|
||||
diff += d-startD;
|
||||
lunarD += diff;
|
||||
int lastDate = LunarUtil.getDaysOfMonth(lunarY,lunarM);
|
||||
while(lunarD>lastDate){
|
||||
lunarD -= lastDate;
|
||||
lunarM = LunarUtil.nextMonth(lunarY,lunarM);
|
||||
if(lunarM==1){
|
||||
lunarY++;
|
||||
diff += d-startDay;
|
||||
lunarDay += diff;
|
||||
int lastDate = LunarUtil.getDaysOfMonth(lunarYear,lunarMonth);
|
||||
while(lunarDay>lastDate){
|
||||
lunarDay -= lastDate;
|
||||
lunarMonth = LunarUtil.nextMonth(lunarYear,lunarMonth);
|
||||
if(lunarMonth==1){
|
||||
lunarYear++;
|
||||
}
|
||||
lastDate = LunarUtil.getDaysOfMonth(lunarY,lunarM);
|
||||
lastDate = LunarUtil.getDaysOfMonth(lunarYear,lunarMonth);
|
||||
}
|
||||
year = lunarY;
|
||||
month = lunarM;
|
||||
day = lunarD;
|
||||
year = lunarYear;
|
||||
month = lunarMonth;
|
||||
day = lunarDay;
|
||||
dayOffset = LunarUtil.computeAddDays(year,month,day);
|
||||
int addDays = (dayOffset + LunarUtil.BASE_DAY_GANZHI_INDEX)%60;
|
||||
dayGanIndex = addDays%10;
|
||||
dayZhiIndex = addDays%12;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过指定日期获取农历
|
||||
* 通过指定阳历日期获取农历
|
||||
*
|
||||
* @param date 日期
|
||||
* @param date 阳历日期
|
||||
* @return 农历
|
||||
*/
|
||||
public static Lunar fromDate(Date date){
|
||||
@@ -145,6 +159,20 @@ public class Lunar{
|
||||
return LunarUtil.SHENGXIAO[(year-4)%12+1];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取中文的年
|
||||
*
|
||||
* @return 中文年,如二零零一
|
||||
*/
|
||||
public String getYearInChinese(){
|
||||
String y = (year+"");
|
||||
StringBuilder s = new StringBuilder();
|
||||
for(int i=0,j=y.length();i<j;i++){
|
||||
s.append(LunarUtil.NUMBER[y.charAt(i)-'0']);
|
||||
}
|
||||
return s.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取中文的月
|
||||
*
|
||||
@@ -310,10 +338,9 @@ public class Lunar{
|
||||
* @return 阳历日期
|
||||
*/
|
||||
private Solar toSolar(){
|
||||
int diff = LunarUtil.computeAddDays(year,month,day);
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.set(SolarUtil.BASE_YEAR,SolarUtil.BASE_MONTH-1,SolarUtil.BASE_DAY);
|
||||
c.add(Calendar.DATE,diff);
|
||||
c.add(Calendar.DATE,dayOffset);
|
||||
return new Solar(c);
|
||||
}
|
||||
|
||||
@@ -339,10 +366,7 @@ public class Lunar{
|
||||
* @return 干支纪日,如己卯
|
||||
*/
|
||||
public String getDayInGanZhi(){
|
||||
int diff = LunarUtil.computeAddDays(year,month,day);
|
||||
diff += LunarUtil.BASE_DAY_GANZHI_INDEX;
|
||||
diff = diff%60;
|
||||
return LunarUtil.GAN[diff%10+1]+LunarUtil.ZHI[diff%12+1];
|
||||
return LunarUtil.GAN[dayGanIndex+1]+LunarUtil.ZHI[dayZhiIndex+1];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -350,10 +374,7 @@ public class Lunar{
|
||||
* @return 彭祖百忌天干
|
||||
*/
|
||||
public String getPengZuGan(){
|
||||
int diff = LunarUtil.computeAddDays(year,month,day);
|
||||
diff += LunarUtil.BASE_DAY_GANZHI_INDEX;
|
||||
diff = diff%60;
|
||||
return LunarUtil.PENGZU_GAN[diff%10+1];
|
||||
return LunarUtil.PENGZU_GAN[dayGanIndex+1];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -361,17 +382,154 @@ public class Lunar{
|
||||
* @return 彭祖百忌地支
|
||||
*/
|
||||
public String getPengZuZhi(){
|
||||
int diff = LunarUtil.computeAddDays(year,month,day);
|
||||
diff += LunarUtil.BASE_DAY_GANZHI_INDEX;
|
||||
diff = diff%60;
|
||||
return LunarUtil.PENGZU_ZHI[diff%12+1];
|
||||
return LunarUtil.PENGZU_ZHI[dayZhiIndex+1];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取喜神方位
|
||||
* @return 喜神方位,如艮
|
||||
*/
|
||||
public String getPositionXi(){
|
||||
return LunarUtil.POSITION_XI[dayGanIndex+1];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取喜神方位描述
|
||||
* @return 喜神方位描述,如东北
|
||||
*/
|
||||
public String getPositionXiDesc(){
|
||||
return LunarUtil.POSITION_DESC.get(getPositionXi());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取阳贵神方位
|
||||
* @return 阳贵神方位,如艮
|
||||
*/
|
||||
public String getPositionYangGui(){
|
||||
return LunarUtil.POSITION_YANG_GUI[dayGanIndex+1];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取阳贵神方位描述
|
||||
* @return 阳贵神方位描述,如东北
|
||||
*/
|
||||
public String getPositionYangGuiDesc(){
|
||||
return LunarUtil.POSITION_DESC.get(getPositionYangGui());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取阴贵神方位
|
||||
* @return 阴贵神方位,如艮
|
||||
*/
|
||||
public String getPositionYinGui(){
|
||||
return LunarUtil.POSITION_YIN_GUI[dayGanIndex+1];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取阴贵神方位描述
|
||||
* @return 阴贵神方位描述,如东北
|
||||
*/
|
||||
public String getPositionYinGuiDesc(){
|
||||
return LunarUtil.POSITION_DESC.get(getPositionYinGui());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取福神方位
|
||||
* @return 福神方位,如艮
|
||||
*/
|
||||
public String getPositionFu(){
|
||||
return LunarUtil.POSITION_FU[dayGanIndex+1];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取福神方位描述
|
||||
* @return 福神方位描述,如东北
|
||||
*/
|
||||
public String getPositionFuDesc(){
|
||||
return LunarUtil.POSITION_DESC.get(getPositionFu());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取财神方位
|
||||
* @return 财神方位,如艮
|
||||
*/
|
||||
public String getPositionCai(){
|
||||
return LunarUtil.POSITION_CAI[dayGanIndex+1];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取财神方位描述
|
||||
* @return 财神方位描述,如东北
|
||||
*/
|
||||
public String getPositionCaiDesc(){
|
||||
return LunarUtil.POSITION_DESC.get(getPositionCai());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取冲
|
||||
* @return 冲,如申
|
||||
*/
|
||||
public String getChong(){
|
||||
return LunarUtil.CHONG.get(LunarUtil.ZHI[dayZhiIndex+1]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取无情之克的冲天干
|
||||
* @return 无情之克的冲天干,如甲
|
||||
*/
|
||||
public String getChongGan(){
|
||||
String chong = LunarUtil.GAN[dayGanIndex+1];
|
||||
return LunarUtil.CHONG_GAN.get(chong);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取有情之克的冲天干
|
||||
* @return 有情之克的冲天干,如甲
|
||||
*/
|
||||
public String getChongGanTie(){
|
||||
String chong = LunarUtil.GAN[dayGanIndex+1];
|
||||
return LunarUtil.CHONG_GAN_TIE.get(chong);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取冲生肖
|
||||
* @return 冲生肖,如猴
|
||||
*/
|
||||
public String getChongShengXiao(){
|
||||
String chong = getChong();
|
||||
for(int i=0,j=LunarUtil.ZHI.length;i<j;i++){
|
||||
if(LunarUtil.ZHI[i].equals(chong)){
|
||||
return LunarUtil.SHENGXIAO[i];
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取冲描述
|
||||
* @return 冲描述,如(壬申)猴
|
||||
*/
|
||||
public String getChongDesc(){
|
||||
return "("+getChongGan()+getChong()+")"+getChongShengXiao();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取刹
|
||||
* @return 刹,如北
|
||||
*/
|
||||
public String getSha(){
|
||||
return LunarUtil.SHA.get(LunarUtil.ZHI[dayZhiIndex+1]);
|
||||
}
|
||||
|
||||
public String toFullString(){
|
||||
StringBuilder s = new StringBuilder();
|
||||
s.append(toString());
|
||||
s.append(" ");
|
||||
s.append(getGan());
|
||||
s.append(getZhi());
|
||||
s.append("(");
|
||||
s.append(getShengxiao());
|
||||
s.append(")");
|
||||
s.append("年");
|
||||
s.append(getMonthInGanZhi());
|
||||
s.append("月");
|
||||
@@ -401,17 +559,47 @@ public class Lunar{
|
||||
s.append(getXiu());
|
||||
s.append(getZheng());
|
||||
s.append(getAnimal());
|
||||
s.append(" 彭祖[");
|
||||
s.append(" 彭祖百忌[");
|
||||
s.append(getPengZuGan());
|
||||
s.append(" ");
|
||||
s.append(getPengZuZhi());
|
||||
s.append("]");
|
||||
s.append(" 喜神方位[");
|
||||
s.append(getPositionXi());
|
||||
s.append("](");
|
||||
s.append(getPositionXiDesc());
|
||||
s.append(")");
|
||||
s.append(" 阳贵神方位[");
|
||||
s.append(getPositionYangGui());
|
||||
s.append("](");
|
||||
s.append(getPositionYangGuiDesc());
|
||||
s.append(")");
|
||||
s.append(" 阴贵神方位[");
|
||||
s.append(getPositionYinGui());
|
||||
s.append("](");
|
||||
s.append(getPositionYinGuiDesc());
|
||||
s.append(")");
|
||||
s.append(" 福神方位[");
|
||||
s.append(getPositionFu());
|
||||
s.append("](");
|
||||
s.append(getPositionFuDesc());
|
||||
s.append(")");
|
||||
s.append(" 财神方位[");
|
||||
s.append(getPositionCai());
|
||||
s.append("](");
|
||||
s.append(getPositionCaiDesc());
|
||||
s.append(")");
|
||||
s.append(" 冲[");
|
||||
s.append(getChongDesc());
|
||||
s.append("] 刹[");
|
||||
s.append(getSha());
|
||||
s.append("]");
|
||||
return s.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(){
|
||||
return getGan()+getZhi()+"年"+getMonthInChinese()+"月"+getDayInChinese();
|
||||
return getYearInChinese()+"年"+getMonthInChinese()+"月"+getDayInChinese();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -31,12 +31,26 @@ public class LunarUtil{
|
||||
public static final int[][] QI_MAP = {{21,21,21,21,21,20,21,21,21,20,20,21,21,20,20,20,20,20,20,20,20,19,20,20,20,19,19,20},{20,19,19,20,20,19,19,19,19,19,19,19,19,18,19,19,19,18,18,19,19,18,18,18,18,18,18,18},{21,21,21,22,21,21,21,21,20,21,21,21,20,20,21,21,20,20,20,21,20,20,20,20,19,20,20,20,20},{20,21,21,21,20,20,21,21,20,20,20,21,20,20,20,20,19,20,20,20,19,19,20,20,19,19,19,20,20},{21,22,22,22,21,21,22,22,21,21,21,22,21,21,21,21,20,21,21,21,20,20,21,21,20,20,20,21,21},{22,22,22,22,21,22,22,22,21,21,22,22,21,21,21,22,21,21,21,21,20,21,21,21,20,20,21,21,21},{23,23,24,24,23,23,23,24,23,23,23,23,22,23,23,23,22,22,23,23,22,22,22,23,22,22,22,22,23},{23,24,24,24,23,23,24,24,23,23,23,24,23,23,23,23,22,23,23,23,22,22,23,23,22,22,22,23,23},{23,24,24,24,23,23,24,24,23,23,23,24,23,23,23,23,22,23,23,23,22,22,23,23,22,22,22,23,23},{24,24,24,24,23,24,24,24,23,23,24,24,23,23,23,24,23,23,23,23,22,23,23,23,22,22,23,23,23},{23,23,23,23,22,23,23,23,22,22,23,23,22,22,22,23,22,22,22,22,21,22,22,22,21,21,22,22,22},{22,22,23,23,22,22,22,23,22,22,22,22,21,22,22,22,21,21,22,22,21,21,21,22,21,21,21,21,22}};
|
||||
/** 天干 */
|
||||
public static final String[] GAN = {"","甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};
|
||||
/** 喜神方位,《喜神方位歌》:甲己在艮乙庚乾,丙辛坤位喜神安. 丁壬只在离宫坐,戊癸原在在巽间。 */
|
||||
public static final String[] POSITION_XI = {"","艮","乾","坤","离","巽","艮","乾","坤","离","巽"};
|
||||
/** 阳贵方位,《阳贵神歌》:甲戊坤艮位,乙己是坤坎,庚辛居离艮,丙丁兑与乾,震巽属何日,壬癸贵神安。 */
|
||||
public static final String[] POSITION_YANG_GUI = {"","坤","坤","兑","乾","艮","坎","离","艮","震","巽"};
|
||||
/** 阴贵方位,《阴贵神歌》:甲戊见牛羊,乙己鼠猴乡,丙丁猪鸡位,壬癸蛇兔藏,庚辛逢虎马,此是贵神方。 */
|
||||
public static final String[] POSITION_YIN_GUI = {"","艮","坎","乾","兑","坤","坤","艮","离","巽","震"};
|
||||
/** 福神方位,参考多个黄历而决定采用的《福神方位歌》:甲乙东南是福神,丙丁正东是堪宜,戊北己南庚辛坤,壬在乾方癸在西。 */
|
||||
public static final String[] POSITION_FU = {"","巽","巽","震","震","坎","离","坤","坤","乾","兑"};
|
||||
//未采用的《福神方位歌》:甲己正北是福神,丙辛西北乾宫存,乙庚坤位戊癸艮,丁壬巽上好追寻。
|
||||
//public static final String[] POSITION_FU = {"","坎","坤","乾","巽","艮","坎","坤","乾","巽","艮"};
|
||||
/** 财神方位,《财神方位歌》:甲乙东北是财神,丙丁向在西南寻,戊己正北坐方位, 庚辛正东去安身,壬癸原来正南坐,便是财神方位真。 */
|
||||
public static final String[] POSITION_CAI = {"","艮","艮","坤","坤","坎","坎","震","震","离","离"};
|
||||
/** 地支 */
|
||||
public static final String[] ZHI = {"","子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};
|
||||
/** 彭祖百忌.天干 */
|
||||
public static final String[] PENGZU_GAN = {"","甲不开仓财物耗散","乙不栽植千株不长","丙不修灶必见灾殃","丁不剃头头必生疮","戊不受田田主不祥","己不破券二比并亡","庚不经络织机虚张","辛不合酱主人不尝","壬不泱水更难提防","癸不词讼理弱敌强"};
|
||||
/** 彭祖百忌.地支 */
|
||||
public static final String[] PENGZU_ZHI = {"","子不问卜自惹祸殃","丑不冠带主不还乡","寅不祭祀神鬼不尝","卯不穿井水泉不香","辰不哭泣必主重丧","巳不远行财物伏藏","午不苫盖屋主更张","未不服药毒气入肠","申不安床鬼祟入房","酉不会客醉坐颠狂","戌不吃犬作怪上床","亥不嫁娶不利新郎"};
|
||||
/** 数字 */
|
||||
public static final String[] NUMBER = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
|
||||
/** 月 */
|
||||
public static final String[] MONTH = {"","正","贰","叁","肆","伍","陆","柒","捌","玖","拾","冬","腊"};
|
||||
/** 季节 */
|
||||
@@ -196,6 +210,109 @@ public class LunarUtil{
|
||||
put("北","玄武");
|
||||
}
|
||||
};
|
||||
/** 冲,即地支冲(子午相冲,丑未相冲,寅申相冲,辰戌相冲,卯酉相冲,巳亥相冲),由于地支对应十二生肖,也就对应了生肖相冲 */
|
||||
public static final Map<String,String> CHONG = new HashMap<String,String>(){
|
||||
private static final long serialVersionUID = -1;
|
||||
{
|
||||
put("子","午");
|
||||
put("丑","未");
|
||||
put("寅","申");
|
||||
put("卯","酉");
|
||||
put("辰","戌");
|
||||
put("巳","亥");
|
||||
put("午","子");
|
||||
put("未","丑");
|
||||
put("申","寅");
|
||||
put("酉","卯");
|
||||
put("戌","辰");
|
||||
put("亥","巳");
|
||||
}
|
||||
};
|
||||
/** 天干相冲之无情之克(阳克阳,阴克阴) */
|
||||
public static final Map<String,String> CHONG_GAN = new HashMap<String,String>(){
|
||||
private static final long serialVersionUID = -1;
|
||||
{
|
||||
put("甲","戊");
|
||||
put("乙","己");
|
||||
put("丙","庚");
|
||||
put("丁","辛");
|
||||
put("戊","壬");
|
||||
put("己","癸");
|
||||
put("庚","甲");
|
||||
put("辛","乙");
|
||||
put("壬","丙");
|
||||
put("癸","丁");
|
||||
}
|
||||
};
|
||||
/** 天干四冲(无情之克中克得最严重的4个) */
|
||||
public static final Map<String,String> CHONG_GAN_BAD = new HashMap<String,String>(){
|
||||
private static final long serialVersionUID = -1;
|
||||
{
|
||||
put("庚","甲");
|
||||
put("辛","乙");
|
||||
put("壬","丙");
|
||||
put("癸","丁");
|
||||
}
|
||||
};
|
||||
/** 天干相冲之有情之克(阳克阴,阴克阳) */
|
||||
public static final Map<String,String> CHONG_GAN_TIE = new HashMap<String,String>(){
|
||||
private static final long serialVersionUID = -1;
|
||||
{
|
||||
put("甲","己");
|
||||
put("乙","戊");
|
||||
put("丙","辛");
|
||||
put("丁","庚");
|
||||
put("戊","癸");
|
||||
put("己","壬");
|
||||
put("庚","乙");
|
||||
put("辛","甲");
|
||||
put("壬","丁");
|
||||
put("癸","丙");
|
||||
}
|
||||
};
|
||||
/** 天干五合(有情之克中最有情的5个) */
|
||||
public static final Map<String,String> CHONG_GAN_TIE_GOOD = new HashMap<String,String>(){
|
||||
private static final long serialVersionUID = -1;
|
||||
{
|
||||
put("甲","己");
|
||||
put("丙","辛");
|
||||
put("戊","癸");
|
||||
put("庚","乙");
|
||||
put("壬","丁");
|
||||
}
|
||||
};
|
||||
/** 刹(逢巳日、酉日、丑日必煞东;亥日、卯日、未日必煞西;申日、子日、辰日必煞南;寅日、午日、戌日必煞北) */
|
||||
public static final Map<String,String> SHA = new HashMap<String,String>(){
|
||||
private static final long serialVersionUID = -1;
|
||||
{
|
||||
put("子","南");
|
||||
put("丑","东");
|
||||
put("寅","北");
|
||||
put("卯","西");
|
||||
put("辰","南");
|
||||
put("巳","东");
|
||||
put("午","北");
|
||||
put("未","西");
|
||||
put("申","南");
|
||||
put("酉","东");
|
||||
put("戌","北");
|
||||
put("亥","西");
|
||||
}
|
||||
};
|
||||
/** 方位 */
|
||||
public static final Map<String,String> POSITION_DESC = new HashMap<String,String>(){
|
||||
private static final long serialVersionUID = -1;
|
||||
{
|
||||
put("坎","正北");
|
||||
put("艮","东北");
|
||||
put("震","正东");
|
||||
put("巽","东南");
|
||||
put("离","正南");
|
||||
put("坤","西南");
|
||||
put("兑","正西");
|
||||
put("乾","西北");
|
||||
}
|
||||
};
|
||||
/** 宫 */
|
||||
public static final Map<String,String> GONG = new HashMap<String,String>(){
|
||||
private static final long serialVersionUID = -1;
|
||||
|
||||
@@ -14,8 +14,8 @@ public class LunarTest {
|
||||
@Test
|
||||
public void test(){
|
||||
Lunar date = new Lunar(2019,3,27);
|
||||
Assert.assertEquals("己亥年叁月廿七",date.toString());
|
||||
Assert.assertEquals("己亥年叁月廿七 猪年戊辰月戊戌日 (七殿泰山王诞) 西方白虎 娄金狗 彭祖[戊不受田田主不祥 戌不吃犬作怪上床]",date.toFullString());
|
||||
Assert.assertEquals("贰零壹玖年叁月廿七",date.toString());
|
||||
Assert.assertEquals("贰零壹玖年叁月廿七 己亥(猪)年戊辰月戊戌日 (七殿泰山王诞) 西方白虎 娄金狗 彭祖百忌[戊不受田田主不祥 戌不吃犬作怪上床] 喜神方位[巽](东南) 阳贵神方位[艮](东北) 阴贵神方位[坤](西南) 福神方位[坎](正北) 财神方位[坎](正北) 冲[(壬辰)龙] 刹[北]",date.toFullString());
|
||||
Assert.assertEquals("2019-05-01",date.getSolar().toString());
|
||||
Assert.assertEquals("2019-05-01 星期三 (劳动节) 金牛座",date.getSolar().toFullString());
|
||||
}
|
||||
|
||||
@@ -16,8 +16,8 @@ public class SolarTest {
|
||||
Solar date = new Solar(2019,5,1);
|
||||
Assert.assertEquals("2019-05-01",date.toString());
|
||||
Assert.assertEquals("2019-05-01 星期三 (劳动节) 金牛座",date.toFullString());
|
||||
Assert.assertEquals("己亥年叁月廿七",date.getLunar().toString());
|
||||
Assert.assertEquals("己亥年叁月廿七 猪年戊辰月戊戌日 (七殿泰山王诞) 西方白虎 娄金狗 彭祖[戊不受田田主不祥 戌不吃犬作怪上床]",date.getLunar().toFullString());
|
||||
Assert.assertEquals("贰零壹玖年叁月廿七",date.getLunar().toString());
|
||||
Assert.assertEquals("贰零壹玖年叁月廿七 己亥(猪)年戊辰月戊戌日 (七殿泰山王诞) 西方白虎 娄金狗 彭祖百忌[戊不受田田主不祥 戌不吃犬作怪上床] 喜神方位[巽](东南) 阳贵神方位[艮](东北) 阴贵神方位[坤](西南) 福神方位[坎](正北) 财神方位[坎](正北) 冲[(壬辰)龙] 刹[北]",date.getLunar().toFullString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user