From cc9444aa037b821ee601f8bfedf6ec624cee80bc Mon Sep 17 00:00:00 2001 From: 6tail <6tail@6tail.cn> Date: Sun, 25 Oct 2020 13:08:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=85=AB=E5=AD=97=E6=8E=92?= =?UTF-8?q?=E7=9B=98=E6=B5=81=E5=B9=B4=E5=B9=B2=E6=94=AF=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/nlf/calendar/eightchar/DaYun.java | 7 +-- src/test/java/sample/BaZiTestNew.java | 48 +++++++++++++++++++ 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/nlf/calendar/eightchar/DaYun.java b/src/main/java/com/nlf/calendar/eightchar/DaYun.java index aeeecf9..baac118 100644 --- a/src/main/java/com/nlf/calendar/eightchar/DaYun.java +++ b/src/main/java/com/nlf/calendar/eightchar/DaYun.java @@ -39,16 +39,17 @@ public class DaYun { this.yun = yun; this.lunar = yun.getLunar(); this.index = index; + int birthYear = lunar.getSolar().getYear(); int year = yun.getStartSolar().getYear(); if (index < 1) { - this.startYear = lunar.getSolar().getYear(); + this.startYear = birthYear; this.startAge = 1; this.endYear = year - 1; - this.endAge = yun.getStartYear(); + this.endAge = year - birthYear; } else { int add = (index - 1) * 10; this.startYear = year + add; - this.startAge = yun.getStartYear() + add + 1; + this.startAge = this.startYear - birthYear + 1; this.endYear = this.startYear + 9; this.endAge = this.startAge + 9; } diff --git a/src/test/java/sample/BaZiTestNew.java b/src/test/java/sample/BaZiTestNew.java index 3bb1ba2..bce1a71 100644 --- a/src/test/java/sample/BaZiTestNew.java +++ b/src/test/java/sample/BaZiTestNew.java @@ -250,6 +250,54 @@ public class BaZiTestNew { Assert.assertEquals(ages[i], liuNian.getAge()); Assert.assertEquals(years[i] + "年", ganZhi[i], liuNian.getGanZhi()); } + + solar = new Solar(1981, 8, 16, 9, 30, 0); + lunar = solar.getLunar(); + bazi = lunar.getEightChar(); + yun = bazi.getYun(1); + daYun = yun.getDaYun(); + + years = new int[]{1981, 1982, 1983}; + ages = new int[]{1, 2, 3}; + ganZhi = new String[]{"辛酉","壬戌","癸亥"}; + l = daYun[0].getLiuNian(); + for (int i = 0, j = l.length; i < j; i++) { + LiuNian liuNian = l[i]; + Assert.assertEquals(years[i], liuNian.getYear()); + Assert.assertEquals(ages[i], liuNian.getAge()); + Assert.assertEquals(ganZhi[i], liuNian.getGanZhi()); + } + + years = new int[]{1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993}; + ages = new int[]{4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; + ganZhi = new String[]{"甲子","乙丑","丙寅","丁卯","戊辰","己巳","庚午","辛未","壬申","癸酉"}; + l = daYun[1].getLiuNian(); + for (int i = 0, j = l.length; i < j; i++) { + LiuNian liuNian = l[i]; + Assert.assertEquals(years[i], liuNian.getYear()); + Assert.assertEquals(ages[i], liuNian.getAge()); + Assert.assertEquals(ganZhi[i], liuNian.getGanZhi()); + } + + solar = new Solar(1981, 8, 8, 1, 30, 0); + lunar = solar.getLunar(); + bazi = lunar.getEightChar(); + yun = bazi.getYun(1); + daYun = yun.getDaYun(); + + l = daYun[0].getLiuNian(); + Assert.assertEquals(0, l.length); + + years = new int[]{1981,1982, 1983,1984, 1985, 1986, 1987, 1988, 1989, 1990}; + ages = new int[]{1,2,3,4,5,6,7,8,9,10}; + ganZhi = new String[]{"辛酉","壬戌","癸亥","甲子","乙丑","丙寅","丁卯","戊辰","己巳","庚午"}; + l = daYun[1].getLiuNian(); + for (int i = 0, j = l.length; i < j; i++) { + LiuNian liuNian = l[i]; + Assert.assertEquals(years[i], liuNian.getYear()); + Assert.assertEquals(ages[i], liuNian.getAge()); + Assert.assertEquals(ganZhi[i], liuNian.getGanZhi()); + } } /**