v1.2.18 修复SolarWeek获取当月第几周的错误。
This commit is contained in:
@@ -16,7 +16,7 @@ lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历)
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.6tail</groupId>
|
<groupId>cn.6tail</groupId>
|
||||||
<artifactId>lunar</artifactId>
|
<artifactId>lunar</artifactId>
|
||||||
<version>1.2.17</version>
|
<version>1.2.18</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ lunar is a calendar library for Solar and Chinese Lunar.
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.6tail</groupId>
|
<groupId>cn.6tail</groupId>
|
||||||
<artifactId>lunar</artifactId>
|
<artifactId>lunar</artifactId>
|
||||||
<version>1.2.17</version>
|
<version>1.2.18</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
2
pom.xml
2
pom.xml
@@ -7,7 +7,7 @@
|
|||||||
<groupId>cn.6tail</groupId>
|
<groupId>cn.6tail</groupId>
|
||||||
<artifactId>lunar</artifactId>
|
<artifactId>lunar</artifactId>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<version>1.2.17</version>
|
<version>1.2.18</version>
|
||||||
<name>${project.groupId}:${project.artifactId}</name>
|
<name>${project.groupId}:${project.artifactId}</name>
|
||||||
<url>https://github.com/6tail/lunar-java</url>
|
<url>https://github.com/6tail/lunar-java</url>
|
||||||
<description>a calendar library for Solar and Chinese Lunar</description>
|
<description>a calendar library for Solar and Chinese Lunar</description>
|
||||||
|
|||||||
@@ -833,16 +833,14 @@ public class Lunar {
|
|||||||
* @return 节令
|
* @return 节令
|
||||||
*/
|
*/
|
||||||
public String getJie() {
|
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];
|
String key = JIE_QI_IN_USE[i];
|
||||||
Solar d = jieQi.get(key);
|
Solar d = jieQi.get(key);
|
||||||
if (d.getYear() == solar.getYear() && d.getMonth() == solar.getMonth() && d.getDay() == solar.getDay()) {
|
if (d.getYear() == solar.getYear() && d.getMonth() == solar.getMonth() && d.getDay() == solar.getDay()) {
|
||||||
jie = key;
|
return convertJieQi(key);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return convertJieQi(jie);
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -851,16 +849,14 @@ public class Lunar {
|
|||||||
* @return 气令
|
* @return 气令
|
||||||
*/
|
*/
|
||||||
public String getQi() {
|
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];
|
String key = JIE_QI_IN_USE[i];
|
||||||
Solar d = jieQi.get(key);
|
Solar d = jieQi.get(key);
|
||||||
if (d.getYear() == solar.getYear() && d.getMonth() == solar.getMonth() && d.getDay() == solar.getDay()) {
|
if (d.getYear() == solar.getYear() && d.getMonth() == solar.getMonth() && d.getDay() == solar.getDay()) {
|
||||||
qi = key;
|
return convertJieQi(key);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return convertJieQi(qi);
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2389,15 +2385,13 @@ public class Lunar {
|
|||||||
* @return 节气名称
|
* @return 节气名称
|
||||||
*/
|
*/
|
||||||
public String getJieQi() {
|
public String getJieQi() {
|
||||||
String name = "";
|
|
||||||
for (Map.Entry<String, Solar> jq : jieQi.entrySet()) {
|
for (Map.Entry<String, Solar> jq : jieQi.entrySet()) {
|
||||||
Solar d = jq.getValue();
|
Solar d = jq.getValue();
|
||||||
if (d.getYear() == solar.getYear() && d.getMonth() == solar.getMonth() && d.getDay() == solar.getDay()) {
|
if (d.getYear() == solar.getYear() && d.getMonth() == solar.getMonth() && d.getDay() == solar.getDay()) {
|
||||||
name = jq.getKey();
|
return convertJieQi(jq.getKey());
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return convertJieQi(name);
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2406,8 +2400,13 @@ public class Lunar {
|
|||||||
* @return 节气对象
|
* @return 节气对象
|
||||||
*/
|
*/
|
||||||
public JieQi getCurrentJieQi() {
|
public JieQi getCurrentJieQi() {
|
||||||
String name = getJieQi();
|
for (Map.Entry<String, Solar> jq : jieQi.entrySet()) {
|
||||||
return name.length() > 0 ? new JieQi(name, solar) : null;
|
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 节气对象
|
* @return 节气对象
|
||||||
*/
|
*/
|
||||||
public JieQi getCurrentJie() {
|
public JieQi getCurrentJie() {
|
||||||
String name = getJie();
|
for(int i=0, j=JIE_QI_IN_USE.length; i<j; i+=2){
|
||||||
return name.length() > 0 ? new JieQi(name, solar) : null;
|
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 节气对象
|
* @return 节气对象
|
||||||
*/
|
*/
|
||||||
public JieQi getCurrentQi() {
|
public JieQi getCurrentQi() {
|
||||||
String name = getQi();
|
for(int i=1, j=JIE_QI_IN_USE.length; i<j; i+=2){
|
||||||
return name.length() > 0 ? new JieQi(name, solar) : null;
|
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() {
|
public String toFullString() {
|
||||||
@@ -2964,10 +2975,8 @@ public class Lunar {
|
|||||||
public String getHou() {
|
public String getHou() {
|
||||||
JieQi jieQi = getPrevJieQi(true);
|
JieQi jieQi = getPrevJieQi(true);
|
||||||
String name = jieQi.getName();
|
String name = jieQi.getName();
|
||||||
Calendar currentCalendar = ExactDate.fromYmd(solar.getYear(), solar.getMonth(), solar.getDay());
|
|
||||||
Solar startSolar = jieQi.getSolar();
|
Solar startSolar = jieQi.getSolar();
|
||||||
Calendar startCalendar = ExactDate.fromYmd(startSolar.getYear(), startSolar.getMonth(), startSolar.getDay());
|
int days = ExactDate.getDaysBetween(startSolar.getYear(), startSolar.getMonth(), startSolar.getDay(), solar.getYear(), solar.getMonth(), solar.getDay());
|
||||||
int days = ExactDate.getDaysBetween(startCalendar, currentCalendar);
|
|
||||||
return String.format("%s %s", name, LunarUtil.HOU[(days / 5) % LunarUtil.HOU.length]);
|
return String.format("%s %s", name, LunarUtil.HOU[(days / 5) % LunarUtil.HOU.length]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -159,10 +159,11 @@ public class SolarWeek {
|
|||||||
public int getIndex() {
|
public int getIndex() {
|
||||||
Calendar c = ExactDate.fromYmd(year, month, 1);
|
Calendar c = ExactDate.fromYmd(year, month, 1);
|
||||||
int firstDayWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
|
int firstDayWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
|
||||||
if (firstDayWeek == 0) {
|
int offset = firstDayWeek - start;
|
||||||
firstDayWeek = 7;
|
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 startTimeZhiIndex = (start.getHour() == 23) ? 11 : LunarUtil.getTimeZhiIndex(start.toYmdHms().substring(11, 16));
|
||||||
// 时辰差
|
// 时辰差
|
||||||
int hourDiff = endTimeZhiIndex - startTimeZhiIndex;
|
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) {
|
if (hourDiff < 0) {
|
||||||
hourDiff += 12;
|
hourDiff += 12;
|
||||||
dayDiff--;
|
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