Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c3ff0cbc5 | ||
|
|
e15a916e55 | ||
|
|
1411d8017f | ||
|
|
a17402241a |
5
CHANGELOG.md
Normal file
5
CHANGELOG.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# Changelog
|
||||
|
||||
|
||||
## [1.3.12] - 2024-02-06
|
||||
1. 八字转阳历结果按时间先后排序,转换速度大幅提升。
|
||||
@@ -16,7 +16,7 @@ lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历)
|
||||
<dependency>
|
||||
<groupId>cn.6tail</groupId>
|
||||
<artifactId>lunar</artifactId>
|
||||
<version>1.3.8</version>
|
||||
<version>1.3.12</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ lunar is a calendar library for Solar and Chinese Lunar.
|
||||
<dependency>
|
||||
<groupId>cn.6tail</groupId>
|
||||
<artifactId>lunar</artifactId>
|
||||
<version>1.3.8</version>
|
||||
<version>1.3.12</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
|
||||
2
pom.xml
2
pom.xml
@@ -7,7 +7,7 @@
|
||||
<groupId>cn.6tail</groupId>
|
||||
<artifactId>lunar</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>1.3.8</version>
|
||||
<version>1.3.12</version>
|
||||
<name>${project.groupId}:${project.artifactId}</name>
|
||||
<url>https://github.com/6tail/lunar-java</url>
|
||||
<description>a calendar library for Solar and Chinese Lunar</description>
|
||||
|
||||
@@ -145,14 +145,14 @@ public class EightChar {
|
||||
* @return 十神
|
||||
*/
|
||||
public String getYearShiShenGan() {
|
||||
return LunarUtil.SHI_SHEN_GAN.get(getDayGan() + getYearGan());
|
||||
return LunarUtil.SHI_SHEN.get(getDayGan() + getYearGan());
|
||||
}
|
||||
|
||||
private List<String> getShiShenZhi(String zhi) {
|
||||
List<String> hideGan = LunarUtil.ZHI_HIDE_GAN.get(zhi);
|
||||
List<String> l = new ArrayList<String>(hideGan.size());
|
||||
for (String gan : hideGan) {
|
||||
l.add(LunarUtil.SHI_SHEN_ZHI.get(getDayGan() + gan));
|
||||
l.add(LunarUtil.SHI_SHEN.get(getDayGan() + gan));
|
||||
}
|
||||
return l;
|
||||
}
|
||||
@@ -264,7 +264,7 @@ public class EightChar {
|
||||
* @return 十神
|
||||
*/
|
||||
public String getMonthShiShenGan() {
|
||||
return LunarUtil.SHI_SHEN_GAN.get(getDayGan() + getMonthGan());
|
||||
return LunarUtil.SHI_SHEN.get(getDayGan() + getMonthGan());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -426,7 +426,7 @@ public class EightChar {
|
||||
* @return 十神
|
||||
*/
|
||||
public String getTimeShiShenGan() {
|
||||
return LunarUtil.SHI_SHEN_GAN.get(getDayGan() + getTimeGan());
|
||||
return LunarUtil.SHI_SHEN.get(getDayGan() + getTimeGan());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -499,29 +499,15 @@ public class EightChar {
|
||||
* @return 命宫
|
||||
*/
|
||||
public String getMingGong() {
|
||||
int monthZhiIndex = 0;
|
||||
int timeZhiIndex = 0;
|
||||
for (int i = 0, j = MONTH_ZHI.length; i < j; i++) {
|
||||
String zhi = MONTH_ZHI[i];
|
||||
if (lunar.getMonthZhiExact().equals(zhi)) {
|
||||
monthZhiIndex = i;
|
||||
}
|
||||
if (lunar.getTimeZhi().equals(zhi)) {
|
||||
timeZhiIndex = i;
|
||||
}
|
||||
int monthZhiIndex = LunarUtil.find(getMonthZhi(), MONTH_ZHI, 0);
|
||||
int timeZhiIndex = LunarUtil.find(getTimeZhi(), MONTH_ZHI, 0);
|
||||
int offset = monthZhiIndex + timeZhiIndex;
|
||||
offset = (offset >= 14 ? 26 : 14) - offset;
|
||||
int ganIndex = (lunar.getYearGanIndexExact() + 1) * 2 + offset;
|
||||
while (ganIndex > 10) {
|
||||
ganIndex -= 10;
|
||||
}
|
||||
int zhiIndex = 26 - (monthZhiIndex + timeZhiIndex);
|
||||
if (zhiIndex > 12) {
|
||||
zhiIndex -= 12;
|
||||
}
|
||||
int jiaZiIndex = LunarUtil.getJiaZiIndex(lunar.getMonthInGanZhiExact()) - (monthZhiIndex - zhiIndex);
|
||||
if (jiaZiIndex >= 60) {
|
||||
jiaZiIndex -= 60;
|
||||
}
|
||||
if (jiaZiIndex < 0) {
|
||||
jiaZiIndex += 60;
|
||||
}
|
||||
return LunarUtil.JIA_ZI[jiaZiIndex];
|
||||
return LunarUtil.GAN[ganIndex] + MONTH_ZHI[offset];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -539,29 +525,17 @@ public class EightChar {
|
||||
* @return 身宫
|
||||
*/
|
||||
public String getShenGong() {
|
||||
int monthZhiIndex = 0;
|
||||
int timeZhiIndex = 0;
|
||||
for (int i = 0, j = MONTH_ZHI.length; i < j; i++) {
|
||||
String zhi = MONTH_ZHI[i];
|
||||
if (lunar.getMonthZhiExact().equals(zhi)) {
|
||||
monthZhiIndex = i;
|
||||
}
|
||||
if (lunar.getTimeZhi().equals(zhi)) {
|
||||
timeZhiIndex = i;
|
||||
}
|
||||
int monthZhiIndex = LunarUtil.find(getMonthZhi(), MONTH_ZHI, 0);
|
||||
int timeZhiIndex = LunarUtil.find(getTimeZhi(), LunarUtil.ZHI, 0);
|
||||
int offset = monthZhiIndex + timeZhiIndex;
|
||||
while (offset > 12) {
|
||||
offset -= 12;
|
||||
}
|
||||
int zhiIndex = 2 + monthZhiIndex + timeZhiIndex;
|
||||
if (zhiIndex > 12) {
|
||||
zhiIndex -= 12;
|
||||
int ganIndex = (lunar.getYearGanIndexExact() + 1) * 2 + (offset % 12);
|
||||
while (ganIndex > 10) {
|
||||
ganIndex -= 10;
|
||||
}
|
||||
int jiaZiIndex = LunarUtil.getJiaZiIndex(lunar.getMonthInGanZhiExact()) - (monthZhiIndex - zhiIndex);
|
||||
if (jiaZiIndex >= 60) {
|
||||
jiaZiIndex -= 60;
|
||||
}
|
||||
if (jiaZiIndex < 0) {
|
||||
jiaZiIndex += 60;
|
||||
}
|
||||
return LunarUtil.JIA_ZI[jiaZiIndex];
|
||||
return LunarUtil.GAN[ganIndex] + MONTH_ZHI[offset];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -296,49 +296,67 @@ public class Solar {
|
||||
public static List<Solar> fromBaZi(String yearGanZhi, String monthGanZhi, String dayGanZhi, String timeGanZhi, int sect, int baseYear) {
|
||||
sect = (1 == sect) ? 1 : 2;
|
||||
List<Solar> l = new ArrayList<Solar>();
|
||||
List<Integer> years = new ArrayList<Integer>();
|
||||
Solar today = fromDate(new Date());
|
||||
int offsetYear = LunarUtil.getJiaZiIndex(today.getLunar().getYearInGanZhiExact())-LunarUtil.getJiaZiIndex(yearGanZhi);
|
||||
if(offsetYear < 0){
|
||||
offsetYear += 60;
|
||||
// 月地支距寅月的偏移值
|
||||
int m = LunarUtil.find(monthGanZhi.substring(1), LunarUtil.ZHI, -1) - 2;
|
||||
if (m < 0) {
|
||||
m += 12;
|
||||
}
|
||||
int startYear = today.getYear() - offsetYear - 1;
|
||||
int minYear = baseYear - 2;
|
||||
while (startYear >= minYear) {
|
||||
years.add(startYear);
|
||||
startYear -= 60;
|
||||
// 月天干要一致
|
||||
if (((LunarUtil.find(yearGanZhi.substring(0, 1), LunarUtil.GAN, -1) + 1) * 2 + m) % 10 != LunarUtil.find(monthGanZhi.substring(0,1), LunarUtil.GAN, -1)) {
|
||||
return l;
|
||||
}
|
||||
List<Integer> hours = new ArrayList<Integer>(2);
|
||||
String timeZhi = timeGanZhi.substring(1);
|
||||
for(int i = 1, j = LunarUtil.ZHI.length; i < j; i++){
|
||||
if(LunarUtil.ZHI[i].equals(timeZhi)){
|
||||
hours.add((i - 1) * 2);
|
||||
break;
|
||||
}
|
||||
// 1年的立春是辛酉,序号57
|
||||
int y = LunarUtil.getJiaZiIndex(yearGanZhi) - 57;
|
||||
if (y < 0) {
|
||||
y += 60;
|
||||
}
|
||||
if ("子".equals(timeZhi)) {
|
||||
hours.add(23);
|
||||
}
|
||||
for (int hour: hours) {
|
||||
for (Integer y : years) {
|
||||
int maxYear = y + 3;
|
||||
int year = y;
|
||||
int month = 11;
|
||||
if (year < baseYear) {
|
||||
year = baseYear;
|
||||
month = 1;
|
||||
}
|
||||
Solar solar = fromYmdHms(year, month, 1, hour, 0, 0);
|
||||
while (solar.getYear() <= maxYear) {
|
||||
Lunar lunar = solar.getLunar();
|
||||
y++;
|
||||
// 节令偏移值
|
||||
m *= 2;
|
||||
// 时辰地支转时刻,子时按零点算
|
||||
int h = LunarUtil.find(timeGanZhi.substring(1), LunarUtil.ZHI, -1) * 2;
|
||||
int startYear = baseYear - 1;
|
||||
|
||||
// 结束年
|
||||
Calendar c = Calendar.getInstance(TIME_ZONE);
|
||||
c.setTime(new Date());
|
||||
c.set(Calendar.MILLISECOND, 0);
|
||||
int endYear = c.get(Calendar.YEAR);
|
||||
|
||||
while (y <= endYear) {
|
||||
if (y >= startYear) {
|
||||
// 立春为寅月的开始
|
||||
List<Solar> jieQiList = new ArrayList<Solar>(Lunar.fromYmd(y, 1, 1).getJieQiTable().values());
|
||||
// 节令推移,年干支和月干支就都匹配上了
|
||||
Solar solarTime = jieQiList.get(4 + m);
|
||||
if (solarTime.getYear() >= baseYear) {
|
||||
int mi = 0;
|
||||
int s = 0;
|
||||
// 日干支和节令干支的偏移值
|
||||
Lunar lunar = solarTime.getLunar();
|
||||
String dgz = (2 == sect) ? lunar.getDayInGanZhiExact2() : lunar.getDayInGanZhiExact();
|
||||
int d = LunarUtil.getJiaZiIndex(dayGanZhi) - LunarUtil.getJiaZiIndex(dgz);
|
||||
if (d < 0) {
|
||||
d += 60;
|
||||
}
|
||||
if (d > 0) {
|
||||
// 从节令推移天数
|
||||
solarTime = solarTime.next(d);
|
||||
} else if (h == solarTime.getHour()) {
|
||||
// 如果正好是节令当天,且小时和节令的小时数相等的极端情况,把分钟和秒钟带上
|
||||
mi = solarTime.getMinute();
|
||||
s = solarTime.getSecond();
|
||||
}
|
||||
// 验证一下
|
||||
Solar solar = Solar.fromYmdHms(solarTime.getYear(), solarTime.getMonth(), solarTime.getDay(), h, mi, s);
|
||||
lunar = solar.getLunar();
|
||||
dgz = (2 == sect) ? lunar.getDayInGanZhiExact2() : lunar.getDayInGanZhiExact();
|
||||
if (lunar.getYearInGanZhiExact().equals(yearGanZhi) && lunar.getMonthInGanZhiExact().equals(monthGanZhi) && dgz.equals(dayGanZhi) && lunar.getTimeInGanZhi().equals(timeGanZhi)) {
|
||||
l.add(solar);
|
||||
break;
|
||||
}
|
||||
solar = solar.next(1);
|
||||
}
|
||||
}
|
||||
y += 60;
|
||||
}
|
||||
return l;
|
||||
}
|
||||
@@ -358,7 +376,7 @@ public class Solar {
|
||||
* @return 0123456
|
||||
*/
|
||||
public int getWeek() {
|
||||
return ((int)getJulianDay() + 7000002) % 7;
|
||||
return ((int)(getJulianDay() + 0.5) + 7000001) % 7;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -605,8 +605,8 @@ public class LunarUtil{
|
||||
}
|
||||
};
|
||||
|
||||
/** 天干十神,日主+天干为键 */
|
||||
public static final Map<String,String> SHI_SHEN_GAN = new HashMap<String,String>() {
|
||||
/** 十神,日主+天干为键 */
|
||||
public static final Map<String,String> SHI_SHEN = new HashMap<String,String>() {
|
||||
private static final long serialVersionUID = -1;
|
||||
{
|
||||
put("甲甲","比肩");
|
||||
@@ -712,113 +712,6 @@ public class LunarUtil{
|
||||
}
|
||||
};
|
||||
|
||||
/** 地支十神,日主+地支藏干主气为键 */
|
||||
public static final Map<String,String> SHI_SHEN_ZHI = new HashMap<String,String>() {
|
||||
private static final long serialVersionUID = -1;
|
||||
{
|
||||
put("甲癸","正印");
|
||||
put("甲己","正财");
|
||||
put("甲辛","正官");
|
||||
put("甲丙","食神");
|
||||
put("甲甲","比肩");
|
||||
put("甲戊","偏财");
|
||||
put("甲乙","劫财");
|
||||
put("甲庚","七杀");
|
||||
put("甲丁","伤官");
|
||||
put("甲壬","偏印");
|
||||
put("乙癸","偏印");
|
||||
put("乙己","偏财");
|
||||
put("乙辛","七杀");
|
||||
put("乙丙","伤官");
|
||||
put("乙甲","劫财");
|
||||
put("乙戊","正财");
|
||||
put("乙乙","比肩");
|
||||
put("乙庚","正官");
|
||||
put("乙丁","食神");
|
||||
put("乙壬","正印");
|
||||
put("丙癸","正官");
|
||||
put("丙己","伤官");
|
||||
put("丙辛","正财");
|
||||
put("丙丙","比肩");
|
||||
put("丙甲","偏印");
|
||||
put("丙戊","食神");
|
||||
put("丙乙","正印");
|
||||
put("丙庚","偏财");
|
||||
put("丙丁","劫财");
|
||||
put("丙壬","七杀");
|
||||
put("丁癸","七杀");
|
||||
put("丁己","食神");
|
||||
put("丁辛","偏财");
|
||||
put("丁丙","劫财");
|
||||
put("丁甲","正印");
|
||||
put("丁戊","伤官");
|
||||
put("丁乙","偏印");
|
||||
put("丁庚","正财");
|
||||
put("丁丁","比肩");
|
||||
put("丁壬","正官");
|
||||
put("戊癸","正财");
|
||||
put("戊己","劫财");
|
||||
put("戊辛","伤官");
|
||||
put("戊丙","偏印");
|
||||
put("戊甲","七杀");
|
||||
put("戊戊","比肩");
|
||||
put("戊乙","正官");
|
||||
put("戊庚","食神");
|
||||
put("戊丁","正印");
|
||||
put("戊壬","偏财");
|
||||
put("己癸","偏财");
|
||||
put("己己","比肩");
|
||||
put("己辛","食神");
|
||||
put("己丙","正印");
|
||||
put("己甲","正官");
|
||||
put("己戊","劫财");
|
||||
put("己乙","七杀");
|
||||
put("己庚","伤官");
|
||||
put("己丁","偏印");
|
||||
put("己壬","正财");
|
||||
put("庚癸","伤官");
|
||||
put("庚己","正印");
|
||||
put("庚辛","劫财");
|
||||
put("庚丙","七杀");
|
||||
put("庚甲","偏财");
|
||||
put("庚戊","偏印");
|
||||
put("庚乙","正财");
|
||||
put("庚庚","比肩");
|
||||
put("庚丁","正官");
|
||||
put("庚壬","食神");
|
||||
put("辛癸","食神");
|
||||
put("辛己","偏印");
|
||||
put("辛辛","比肩");
|
||||
put("辛丙","正官");
|
||||
put("辛甲","正财");
|
||||
put("辛戊","正印");
|
||||
put("辛乙","偏财");
|
||||
put("辛庚","劫财");
|
||||
put("辛丁","七杀");
|
||||
put("辛壬","伤官");
|
||||
put("壬癸","劫财");
|
||||
put("壬己","正官");
|
||||
put("壬辛","正印");
|
||||
put("壬丙","偏财");
|
||||
put("壬甲","食神");
|
||||
put("壬戊","七杀");
|
||||
put("壬乙","伤官");
|
||||
put("壬庚","偏印");
|
||||
put("壬丁","正财");
|
||||
put("壬壬","比肩");
|
||||
put("癸癸","比肩");
|
||||
put("癸己","七杀");
|
||||
put("癸辛","偏印");
|
||||
put("癸丙","正财");
|
||||
put("癸甲","伤官");
|
||||
put("癸戊","正官");
|
||||
put("癸乙","食神");
|
||||
put("癸庚","正印");
|
||||
put("癸丁","偏财");
|
||||
put("癸壬","劫财");
|
||||
}
|
||||
};
|
||||
|
||||
/** 地支藏干表,分别为主气、余气、杂气 */
|
||||
public static final Map<String,List<String>> ZHI_HIDE_GAN = new HashMap<String,List<String>>() {
|
||||
private static final long serialVersionUID = -1;
|
||||
@@ -916,9 +809,13 @@ public class LunarUtil{
|
||||
* @return 甲子序号
|
||||
*/
|
||||
public static int getJiaZiIndex(String ganZhi){
|
||||
for(int i=0,j=LunarUtil.JIA_ZI.length;i<j;i++){
|
||||
if(LunarUtil.JIA_ZI[i].equals(ganZhi)){
|
||||
return i;
|
||||
return find(ganZhi, JIA_ZI, 0);
|
||||
}
|
||||
|
||||
public static int find(String name, String[] names, int offset) {
|
||||
for(int i=0,j=names.length;i<j;i++){
|
||||
if(names[i].equals(name)){
|
||||
return i + offset;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
@@ -1127,22 +1024,8 @@ public class LunarUtil{
|
||||
* @return 旬下标,0-5
|
||||
*/
|
||||
protected static int getXunIndex(String ganZhi){
|
||||
String gan = ganZhi.substring(0,1);
|
||||
String zhi = ganZhi.substring(1);
|
||||
int ganIndex = 0;
|
||||
int zhiIndex = 0;
|
||||
for(int i=0,j=GAN.length;i<j;i++){
|
||||
if(GAN[i].equals(gan)){
|
||||
ganIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for(int i=0,j=ZHI.length;i<j;i++){
|
||||
if(ZHI[i].equals(zhi)){
|
||||
zhiIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
int ganIndex = find(ganZhi.substring(0, 1), GAN, 0);
|
||||
int zhiIndex = find(ganZhi.substring(1), ZHI, 0);
|
||||
int diff = ganIndex - zhiIndex;
|
||||
if(diff<0){
|
||||
diff += 12;
|
||||
|
||||
@@ -77,7 +77,7 @@ public class BaZiTestNew {
|
||||
public void test7() {
|
||||
Solar solar = new Solar(2020, 5, 26, 23, 43, 0);
|
||||
Lunar lunar = solar.getLunar();
|
||||
//庚子, 辛巳, 庚午, 丙子]
|
||||
// [庚子, 辛巳, 庚午, 丙子]
|
||||
System.out.println(lunar.getEightChar());
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
package sample;
|
||||
|
||||
import com.nlf.calendar.Holiday;
|
||||
import com.nlf.calendar.Solar;
|
||||
import com.nlf.calendar.util.HolidayUtil;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class HolidayTest {
|
||||
|
||||
@Test
|
||||
@@ -20,4 +24,31 @@ public class HolidayTest {
|
||||
System.out.println(HolidayUtil.getHolidaysByTarget("20200501"));
|
||||
System.out.println(HolidayUtil.getHolidaysByTarget(2011,1,1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test1(){
|
||||
StringBuilder s = new StringBuilder();
|
||||
for(int i = 2001; i <= 2024; i++) {
|
||||
List<Holiday> l = HolidayUtil.getHolidays(i);
|
||||
for (Holiday d : l) {
|
||||
int index = -1;
|
||||
for (int x = 0;x <HolidayUtil.NAMES.length;x++) {
|
||||
if (HolidayUtil.NAMES[x].equals(d.getName())) {
|
||||
index = x;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (index == -1) {
|
||||
throw new IllegalArgumentException(d.getName());
|
||||
}
|
||||
String day = d.getDay();
|
||||
String target = d.getTarget();
|
||||
Solar solar = Solar.fromYmd(Integer.parseInt(day.substring(0,4)), Integer.parseInt(day.substring(5,7)), Integer.parseInt(day.substring(8)));
|
||||
Solar targetSolar = Solar.fromYmd(Integer.parseInt(target.substring(0,4)), Integer.parseInt(target.substring(5,7)), Integer.parseInt(target.substring(8)));
|
||||
int diff = targetSolar.subtract(solar);
|
||||
s.append(String.format("%s%d%d%s%02d", d.getDay().replace("-",""), d.isWork() ? 0 : 1, index, diff < 0 ? "-" : "+", Math.abs(diff)));
|
||||
}
|
||||
}
|
||||
System.out.println(s);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,7 +234,7 @@ public class BaZiTest {
|
||||
@Test
|
||||
public void testShenGong1() {
|
||||
Lunar lunar = new Solar(1994, 12, 6, 2, 0, 0).getLunar();
|
||||
Assert.assertEquals("身宫", "丁丑", lunar.getEightChar().getShenGong());
|
||||
Assert.assertEquals("身宫", "乙丑", lunar.getEightChar().getShenGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -258,8 +258,8 @@ public class BaZiTest {
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("1976-09-21 12:00:00");
|
||||
expected.add("1916-10-06 12:00:00");
|
||||
expected.add("1976-09-21 12:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@@ -285,8 +285,8 @@ public class BaZiTest {
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("1999-07-21 16:00:00");
|
||||
expected.add("1939-08-05 16:00:00");
|
||||
expected.add("1999-07-21 16:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@@ -299,8 +299,8 @@ public class BaZiTest {
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("1960-12-17 12:00:00");
|
||||
expected.add("1901-01-01 12:00:00");
|
||||
expected.add("1960-12-17 12:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@@ -313,8 +313,8 @@ public class BaZiTest {
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("2020-07-21 22:00:00");
|
||||
expected.add("1960-08-05 22:00:00");
|
||||
expected.add("2020-07-21 22:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@@ -368,15 +368,15 @@ public class BaZiTest {
|
||||
|
||||
@Test
|
||||
public void test14() {
|
||||
List<Solar> l = Solar.fromBaZi("癸卯","甲寅","癸丑","甲子", 2, 1843);
|
||||
List<Solar> l = Solar.fromBaZi("癸卯","甲寅","甲寅","甲子", 2, 1843);
|
||||
List<String> actual = new ArrayList<String>();
|
||||
for (Solar solar : l) {
|
||||
actual.add(solar.toYmdHms());
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("2023-02-24 23:00:00");
|
||||
expected.add("1843-02-08 23:00:00");
|
||||
expected.add("1843-02-09 00:00:00");
|
||||
expected.add("2023-02-25 00:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@@ -389,8 +389,8 @@ public class BaZiTest {
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("1960-01-15 16:00:00");
|
||||
expected.add("1900-01-29 16:00:00");
|
||||
expected.add("1960-01-15 16:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@@ -406,4 +406,91 @@ public class BaZiTest {
|
||||
expected.add("1959-12-17 16:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test17() {
|
||||
Solar solar = new Solar(1986, 5, 29, 13, 37, 0);
|
||||
Lunar lunar = solar.getLunar();
|
||||
EightChar eightChar = lunar.getEightChar();
|
||||
Assert.assertEquals("己丑", eightChar.getShenGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test18() {
|
||||
Solar solar = new Solar(2023, 10, 8, 18, 37, 0);
|
||||
Lunar lunar = solar.getLunar();
|
||||
EightChar eightChar = lunar.getEightChar();
|
||||
Assert.assertEquals("己未", eightChar.getShenGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test19() {
|
||||
List<Solar> l = Solar.fromBaZi("丁丑","癸卯","癸丑","辛酉");
|
||||
List<String> actual = new ArrayList<String>();
|
||||
for (Solar solar : l) {
|
||||
actual.add(solar.toYmdHms());
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("1937-03-27 18:00:00");
|
||||
expected.add("1997-03-12 18:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test20() {
|
||||
List<Solar> l = Solar.fromBaZi("乙未","己卯","丁丑","甲辰");
|
||||
List<String> actual = new ArrayList<String>();
|
||||
for (Solar solar : l) {
|
||||
actual.add(solar.toYmdHms());
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("1955-03-17 08:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test21() {
|
||||
Lunar lunar = Solar.fromYmdHms(2024, 1, 29, 9, 30, 0).getLunar();
|
||||
EightChar eightChar = lunar.getEightChar();
|
||||
Assert.assertEquals("命宫", "癸亥", eightChar.getMingGong());
|
||||
Assert.assertEquals("身宫", "己未", eightChar.getShenGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test22() {
|
||||
Assert.assertEquals("身宫", "丙寅", Solar.fromYmdHms(1990, 1, 27, 0, 0, 0).getLunar().getEightChar().getShenGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test23() {
|
||||
Assert.assertEquals("甲戌", Solar.fromYmdHms(2019, 3, 7, 8, 0, 0).getLunar().getEightChar().getMingGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test24() {
|
||||
Assert.assertEquals("丁丑", Solar.fromYmdHms(2019, 3, 27, 2, 0, 0).getLunar().getEightChar().getMingGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test25() {
|
||||
Assert.assertEquals("丙寅", Lunar.fromYmdHms(1994, 5, 20, 18, 0 ,0).getEightChar().getMingGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test26() {
|
||||
Lunar lunar = Solar.fromYmdHms(1986, 2, 16, 8, 0, 0).getLunar();
|
||||
EightChar eightChar = lunar.getEightChar();
|
||||
Assert.assertEquals("命宫", "己亥", eightChar.getMingGong());
|
||||
Assert.assertEquals("身宫", "乙未", eightChar.getShenGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test27() {
|
||||
Lunar lunar = Solar.fromYmdHms(1972, 11, 27, 10, 0, 0).getLunar();
|
||||
EightChar eightChar = lunar.getEightChar();
|
||||
Assert.assertEquals("身宫", "乙巳", eightChar.getShenGong());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -97,4 +97,16 @@ public class WeekTest {
|
||||
Assert.assertEquals(3, solar.getWeek());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test10(){
|
||||
Assert.assertEquals(6, Solar.fromYmd(1961, 9, 30).getWeek());
|
||||
Assert.assertEquals(6, Solar.fromYmdHms(1961, 9, 30, 23, 59, 59).getWeek());
|
||||
Assert.assertEquals(6, Solar.fromYmdHms(1961, 9, 30, 20, 0, 0).getWeek());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test11(){
|
||||
Assert.assertEquals(3, Solar.fromYmdHms(2021, 9, 15, 20, 0, 0).getWeek());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user