v1.2.14 佛历新增27宿;修复宜忌重复的问题;修复获取气时缺冬至的问题。
This commit is contained in:
@@ -83,11 +83,21 @@ public class Foto {
|
||||
return l;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否月斋
|
||||
*
|
||||
* @return true/false
|
||||
*/
|
||||
public boolean isMonthZhai() {
|
||||
int m = getMonth();
|
||||
return 1 == m || 5 == m || 9 == m;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否杨公忌
|
||||
*
|
||||
* @return true/false
|
||||
*/
|
||||
public boolean isDayYangGong() {
|
||||
for (FotoFestival f : getFestivals()) {
|
||||
if ("杨公忌".equals(f.getName())) {
|
||||
@@ -97,11 +107,21 @@ public class Foto {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否朔望斋
|
||||
*
|
||||
* @return true/false
|
||||
*/
|
||||
public boolean isDayZhaiShuoWang() {
|
||||
int d = getDay();
|
||||
return 1 == d || 15 == d;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否六斋日
|
||||
*
|
||||
* @return true/false
|
||||
*/
|
||||
public boolean isDayZhaiSix() {
|
||||
int d = getDay();
|
||||
if (8 == d || 14 == d || 15 == d || 23 == d || 29 == d || 30 == d) {
|
||||
@@ -113,11 +133,21 @@ public class Foto {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否十斋日
|
||||
*
|
||||
* @return true/false
|
||||
*/
|
||||
public boolean isDayZhaiTen() {
|
||||
int d = getDay();
|
||||
return 1 == d || 8 == d || 14 == d || 15 == d || 18 == d || 23 == d || 24 == d || 28 == d || 29 == d || 30 == d;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否观音斋
|
||||
*
|
||||
* @return true/false
|
||||
*/
|
||||
public boolean isDayZhaiGuanYin() {
|
||||
String k = getMonth() + "-" + getDay();
|
||||
for (String d : FotoUtil.DAY_ZHAI_GUAN_YIN) {
|
||||
@@ -128,6 +158,69 @@ public class Foto {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取星宿
|
||||
*
|
||||
* @return 星宿
|
||||
*/
|
||||
public String getXiu() {
|
||||
return FotoUtil.getXiu(getMonth(), getDay());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取宿吉凶
|
||||
*
|
||||
* @return 吉/凶
|
||||
*/
|
||||
public String getXiuLuck() {
|
||||
return LunarUtil.XIU_LUCK.get(getXiu());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取宿歌诀
|
||||
*
|
||||
* @return 宿歌诀
|
||||
*/
|
||||
public String getXiuSong() {
|
||||
return LunarUtil.XIU_SONG.get(getXiu());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取政
|
||||
*
|
||||
* @return 政
|
||||
*/
|
||||
public String getZheng() {
|
||||
return LunarUtil.ZHENG.get(getXiu());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取动物
|
||||
*
|
||||
* @return 动物
|
||||
*/
|
||||
public String getAnimal() {
|
||||
return LunarUtil.ANIMAL.get(getXiu());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取宫
|
||||
*
|
||||
* @return 宫
|
||||
*/
|
||||
public String getGong() {
|
||||
return LunarUtil.GONG.get(getXiu());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取兽
|
||||
*
|
||||
* @return 兽
|
||||
*/
|
||||
public String getShou() {
|
||||
return LunarUtil.SHOU.get(getGong());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getYearInChinese() + "年" + getMonthInChinese() + "月" + getDayInChinese();
|
||||
|
||||
@@ -842,8 +842,8 @@ public class Lunar {
|
||||
*/
|
||||
public String getJie() {
|
||||
String jie = "";
|
||||
for(int i=1,j=JIE_QI.length;i<j;i+=2){
|
||||
String key = JIE_QI[i];
|
||||
for(int i=0,j=JIE_QI_IN_USE.length;i<j;i+=2){
|
||||
String key = JIE_QI_IN_USE[i];
|
||||
Solar d = jieQi.get(key);
|
||||
if (d.getYear() == solar.getYear() && d.getMonth() == solar.getMonth() && d.getDay() == solar.getDay()) {
|
||||
jie = key;
|
||||
@@ -860,8 +860,8 @@ public class Lunar {
|
||||
*/
|
||||
public String getQi() {
|
||||
String qi = "";
|
||||
for(int i=0,j=JIE_QI.length;i<j;i+=2){
|
||||
String key = JIE_QI[i];
|
||||
for(int i=1,j=JIE_QI_IN_USE.length;i<j;i+=2){
|
||||
String key = JIE_QI_IN_USE[i];
|
||||
Solar d = jieQi.get(key);
|
||||
if (d.getYear() == solar.getYear() && d.getMonth() == solar.getMonth() && d.getDay() == solar.getDay()) {
|
||||
qi = key;
|
||||
|
||||
@@ -261,4 +261,25 @@ public class FotoUtil {
|
||||
put("12-30", Collections.nCopies(1, new FotoFestival("诸神下降,察访善恶", "犯者男女俱亡")));
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 27星宿,佛教从印度传入中国,印度把28星宿改为27星宿,把牛宿(牛金牛)纳入了女宿(女土蝠)。
|
||||
*/
|
||||
public static final String[] XIU_27 = {"角", "亢", "氐", "房", "心", "尾", "箕", "斗", "女", "虚", "危", "室", "壁", "奎", "娄", "胃", "昴", "毕", "觜", "参", "井", "鬼", "柳", "星", "张", "翼", "轸"};
|
||||
|
||||
/**
|
||||
* 每月初一的27星宿偏移
|
||||
*/
|
||||
private static final int[] XIU_OFFSET = {11, 13, 15, 17, 19, 21, 24, 0, 2, 4, 7, 9};
|
||||
|
||||
/**
|
||||
* 获取27星宿
|
||||
*
|
||||
* @param month 佛历月
|
||||
* @param day 佛历日
|
||||
* @return 星宿
|
||||
*/
|
||||
public static String getXiu(int month, int day) {
|
||||
return XIU_27[(XIU_OFFSET[Math.abs(month)-1] + day - 1) % XIU_27.length];
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -18,4 +18,14 @@ public class FotoTest {
|
||||
Assert.assertEquals("二五六五年十月十四 (三元降) (四天王巡行)", foto.toFullString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test1() {
|
||||
Foto foto = Foto.fromLunar(Lunar.fromYmd(2020, 4, 13));
|
||||
Assert.assertEquals("氐", foto.getXiu());
|
||||
Assert.assertEquals("土", foto.getZheng());
|
||||
Assert.assertEquals("貉", foto.getAnimal());
|
||||
Assert.assertEquals("东", foto.getGong());
|
||||
Assert.assertEquals("青龙", foto.getShou());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -186,4 +186,12 @@ public class JieQiTest {
|
||||
Assert.assertEquals("2050-12-07 06:41:00", lunar.getJieQiTable().get("大雪").toYmdHms());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test9() {
|
||||
Solar solar = Solar.fromYmd(2021, 12, 21);
|
||||
Assert.assertEquals("冬至", solar.getLunar().getJieQi());
|
||||
Assert.assertEquals("", solar.getLunar().getJie());
|
||||
Assert.assertEquals("冬至", solar.getLunar().getQi());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -387,4 +387,11 @@ public class LunarTest {
|
||||
Assert.assertEquals("厕灶厨 外西南", lunar.getDayPositionTai());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test53() {
|
||||
Solar solar = Solar.fromYmd(2021, 11, 27);
|
||||
Lunar lunar = solar.getLunar();
|
||||
Assert.assertEquals("[嫁娶, 祭祀, 祈福, 求嗣, 开光, 出行, 解除, 出火, 拆卸, 进人口, 入宅, 移徙, 安床, 栽种, 动土, 修造, 纳畜, 入殓, 安葬, 立碑, 除服, 成服]", lunar.getDayYi().toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user