MCPcopy Create free account
hub / github.com/6tail/lunar-java / next

Method next

src/main/java/com/nlf/calendar/SolarWeek.java:191–235  ·  view source on GitHub ↗

周推移 @param weeks 推移的周数,负数为倒推 @param separateMonth 是否按月单独计算 @return 推移后的阳历周

(int weeks, boolean separateMonth)

Source from the content-addressed store, hash-verified

189 * @return 推移后的阳历周
190 */
191 public SolarWeek next(int weeks, boolean separateMonth) {
192 if (0 == weeks) {
193 return new SolarWeek(year, month, day, start);
194 }
195 Solar solar = Solar.fromYmd(year, month, day);
196 if (separateMonth) {
197 int n = weeks;
198 SolarWeek week = new SolarWeek(solar.getYear(), solar.getMonth(), solar.getDay(), start);
199 int month = this.month;
200 boolean plus = n > 0;
201 while (0 != n) {
202 solar = solar.next(plus ? 7 : -7);
203 week = new SolarWeek(solar.getYear(), solar.getMonth(), solar.getDay(), start);
204 int weekMonth = week.getMonth();
205 if (month != weekMonth) {
206 int index = week.getIndex();
207 if (plus) {
208 if (1 == index) {
209 Solar firstDay = week.getFirstDay();
210 week = new SolarWeek(firstDay.getYear(), firstDay.getMonth(), firstDay.getDay(), start);
211 weekMonth = week.getMonth();
212 } else {
213 solar = Solar.fromYmd(week.getYear(), week.getMonth(), 1);
214 week = new SolarWeek(solar.getYear(), solar.getMonth(), solar.getDay(), start);
215 }
216 } else {
217 if (SolarUtil.getWeeksOfMonth(week.getYear(), week.getMonth(), start) == index) {
218 Solar lastDay = week.getFirstDay().next(6);
219 week = new SolarWeek(lastDay.getYear(), lastDay.getMonth(), lastDay.getDay(), start);
220 weekMonth = week.getMonth();
221 } else {
222 solar = Solar.fromYmd(week.getYear(), week.getMonth(), SolarUtil.getDaysOfMonth(week.getYear(), week.getMonth()));
223 week = new SolarWeek(solar.getYear(), solar.getMonth(), solar.getDay(), start);
224 }
225 }
226 month = weekMonth;
227 }
228 n -= plus ? 1 : -1;
229 }
230 return week;
231 } else {
232 solar = solar.next(weeks * 7);
233 return new SolarWeek(solar.getYear(), solar.getMonth(), solar.getDay(), start);
234 }
235 }
236
237 /**
238 * 获取本周第一天的阳历日期(可能跨月)

Callers 1

getWeeksMethod · 0.95

Calls 11

fromYmdMethod · 0.95
getYearMethod · 0.95
getMonthMethod · 0.95
getDayMethod · 0.95
nextMethod · 0.95
getMonthMethod · 0.95
getIndexMethod · 0.95
getFirstDayMethod · 0.95
getYearMethod · 0.95
getWeeksOfMonthMethod · 0.95
getDaysOfMonthMethod · 0.95

Tested by

no test coverage detected