v1.2.18 修复SolarWeek获取当月第几周的错误。
This commit is contained in:
@@ -16,7 +16,7 @@ lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历)
|
||||
<dependency>
|
||||
<groupId>cn.6tail</groupId>
|
||||
<artifactId>lunar</artifactId>
|
||||
<version>1.2.17</version>
|
||||
<version>1.2.18</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.2.17</version>
|
||||
<version>1.2.18</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
|
||||
2
pom.xml
2
pom.xml
@@ -7,7 +7,7 @@
|
||||
<groupId>cn.6tail</groupId>
|
||||
<artifactId>lunar</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>1.2.17</version>
|
||||
<version>1.2.18</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>
|
||||
|
||||
@@ -833,16 +833,14 @@ public class Lunar {
|
||||
* @return 节令
|
||||
*/
|
||||
public String getJie() {
|
||||
String jie = "";
|
||||
for(int i=0,j=JIE_QI_IN_USE.length;i<j;i+=2){
|
||||
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;
|
||||
break;
|
||||
return convertJieQi(key);
|
||||
}
|
||||
}
|
||||
return convertJieQi(jie);
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -851,16 +849,14 @@ public class Lunar {
|
||||
* @return 气令
|
||||
*/
|
||||
public String getQi() {
|
||||
String qi = "";
|
||||
for(int i=1,j=JIE_QI_IN_USE.length;i<j;i+=2){
|
||||
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;
|
||||
break;
|
||||
return convertJieQi(key);
|
||||
}
|
||||
}
|
||||
return convertJieQi(qi);
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2389,15 +2385,13 @@ public class Lunar {
|
||||
* @return 节气名称
|
||||
*/
|
||||
public String getJieQi() {
|
||||
String name = "";
|
||||
for (Map.Entry<String, Solar> jq : jieQi.entrySet()) {
|
||||
Solar d = jq.getValue();
|
||||
if (d.getYear() == solar.getYear() && d.getMonth() == solar.getMonth() && d.getDay() == solar.getDay()) {
|
||||
name = jq.getKey();
|
||||
break;
|
||||
return convertJieQi(jq.getKey());
|
||||
}
|
||||
}
|
||||
return convertJieQi(name);
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2406,8 +2400,13 @@ public class Lunar {
|
||||
* @return 节气对象
|
||||
*/
|
||||
public JieQi getCurrentJieQi() {
|
||||
String name = getJieQi();
|
||||
return name.length() > 0 ? new JieQi(name, solar) : null;
|
||||
for (Map.Entry<String, Solar> jq : jieQi.entrySet()) {
|
||||
Solar d = jq.getValue();
|
||||
if (d.getYear() == solar.getYear() && d.getMonth() == solar.getMonth() && d.getDay() == solar.getDay()) {
|
||||
return new JieQi(convertJieQi(jq.getKey()), d);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2416,8 +2415,14 @@ public class Lunar {
|
||||
* @return 节气对象
|
||||
*/
|
||||
public JieQi getCurrentJie() {
|
||||
String name = getJie();
|
||||
return name.length() > 0 ? new JieQi(name, solar) : null;
|
||||
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()) {
|
||||
return new JieQi(convertJieQi(key), d);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2426,8 +2431,14 @@ public class Lunar {
|
||||
* @return 节气对象
|
||||
*/
|
||||
public JieQi getCurrentQi() {
|
||||
String name = getQi();
|
||||
return name.length() > 0 ? new JieQi(name, solar) : null;
|
||||
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()) {
|
||||
return new JieQi(convertJieQi(key), d);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String toFullString() {
|
||||
@@ -2964,10 +2975,8 @@ public class Lunar {
|
||||
public String getHou() {
|
||||
JieQi jieQi = getPrevJieQi(true);
|
||||
String name = jieQi.getName();
|
||||
Calendar currentCalendar = ExactDate.fromYmd(solar.getYear(), solar.getMonth(), solar.getDay());
|
||||
Solar startSolar = jieQi.getSolar();
|
||||
Calendar startCalendar = ExactDate.fromYmd(startSolar.getYear(), startSolar.getMonth(), startSolar.getDay());
|
||||
int days = ExactDate.getDaysBetween(startCalendar, currentCalendar);
|
||||
int days = ExactDate.getDaysBetween(startSolar.getYear(), startSolar.getMonth(), startSolar.getDay(), solar.getYear(), solar.getMonth(), solar.getDay());
|
||||
return String.format("%s %s", name, LunarUtil.HOU[(days / 5) % LunarUtil.HOU.length]);
|
||||
}
|
||||
|
||||
|
||||
@@ -159,10 +159,11 @@ public class SolarWeek {
|
||||
public int getIndex() {
|
||||
Calendar c = ExactDate.fromYmd(year, month, 1);
|
||||
int firstDayWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
|
||||
if (firstDayWeek == 0) {
|
||||
firstDayWeek = 7;
|
||||
int offset = firstDayWeek - start;
|
||||
if(offset < 0) {
|
||||
offset += 7;
|
||||
}
|
||||
return (int) Math.ceil((day + firstDayWeek - start) / 7D);
|
||||
return (int) Math.ceil((day + offset) / 7D);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -62,10 +62,8 @@ public class Yun {
|
||||
int startTimeZhiIndex = (start.getHour() == 23) ? 11 : LunarUtil.getTimeZhiIndex(start.toYmdHms().substring(11, 16));
|
||||
// 时辰差
|
||||
int hourDiff = endTimeZhiIndex - startTimeZhiIndex;
|
||||
Calendar endCalendar = ExactDate.fromYmd(end.getYear(), end.getMonth(), end.getDay());
|
||||
Calendar startCalendar = ExactDate.fromYmd(start.getYear(), start.getMonth(), start.getDay());
|
||||
// 天数差
|
||||
int dayDiff = (int) ((endCalendar.getTimeInMillis() - startCalendar.getTimeInMillis()) / (1000 * 3600 * 24));
|
||||
int dayDiff = ExactDate.getDaysBetween(start.getYear(), start.getMonth(), start.getDay(), end.getYear(), end.getMonth(), end.getDay());
|
||||
if (hourDiff < 0) {
|
||||
hourDiff += 12;
|
||||
dayDiff--;
|
||||
|
||||
74
src/test/java/test/SolarWeekTest.java
Normal file
74
src/test/java/test/SolarWeekTest.java
Normal file
@@ -0,0 +1,74 @@
|
||||
package test;
|
||||
|
||||
import com.nlf.calendar.SolarWeek;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* 阳历周测试
|
||||
*
|
||||
* @author 6tail
|
||||
*/
|
||||
public class SolarWeekTest {
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
SolarWeek week = SolarWeek.fromYmd(2022, 5, 1, 0);
|
||||
Assert.assertEquals(1, week.getIndex());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test1() {
|
||||
SolarWeek week = SolarWeek.fromYmd(2022, 5, 7, 0);
|
||||
Assert.assertEquals(1, week.getIndex());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test2() {
|
||||
SolarWeek week = SolarWeek.fromYmd(2022, 5, 8, 0);
|
||||
Assert.assertEquals(2, week.getIndex());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test3() {
|
||||
SolarWeek week = SolarWeek.fromYmd(2022, 5, 1, 1);
|
||||
Assert.assertEquals(1, week.getIndex());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test4() {
|
||||
SolarWeek week = SolarWeek.fromYmd(2022, 5, 2, 1);
|
||||
Assert.assertEquals(2, week.getIndex());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test5() {
|
||||
SolarWeek week = SolarWeek.fromYmd(2022, 5, 8, 1);
|
||||
Assert.assertEquals(2, week.getIndex());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test6() {
|
||||
SolarWeek week = SolarWeek.fromYmd(2021, 11, 1, 0);
|
||||
Assert.assertEquals(1, week.getIndex());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test7() {
|
||||
SolarWeek week = SolarWeek.fromYmd(2021, 11, 1, 1);
|
||||
Assert.assertEquals(1, week.getIndex());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test8() {
|
||||
SolarWeek week = SolarWeek.fromYmd(2021, 5, 2, 2);
|
||||
Assert.assertEquals(1, week.getIndex());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test9() {
|
||||
SolarWeek week = SolarWeek.fromYmd(2021, 5, 4, 2);
|
||||
Assert.assertEquals(2, week.getIndex());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user