MCPcopy Create free account
hub / github.com/MenoData/Time4J / between

Method between

base/src/main/java/net/time4j/YOWElement.java:318–371  ·  view source on GitHub ↗
(
            T start,
            T end
        )

Source from the content-addressed store, hash-verified

316 }
317
318 @Override
319 public long between(
320 T start,
321 T end
322 ) {
323
324 PlainDate startDate = start.get(CALENDAR_DATE);
325 PlainDate endDate = end.get(CALENDAR_DATE);
326
327 int startYOW = startDate.get(YOWElement.INSTANCE).intValue();
328 int endYOW = endDate.get(YOWElement.INSTANCE).intValue();
329 long delta = endYOW - startYOW;
330
331 if (delta != 0) {
332 int startWOY = getWeekOfYear(startDate);
333 int endWOY = getWeekOfYear(endDate);
334
335 if ((delta > 0) && (startWOY > endWOY)) {
336 delta--;
337 } else if ((delta < 0) && (startWOY < endWOY)) {
338 delta++;
339 }
340
341 if ((delta != 0) && (startWOY == endWOY)) {
342 int startDOW = startDate.getDayOfWeek().getValue();
343 int endDOW = endDate.getDayOfWeek().getValue();
344
345 if ((delta > 0) && (startDOW > endDOW)) {
346 delta--;
347 } else if ((delta < 0) && (startDOW < endDOW)) {
348 delta++;
349 }
350
351 if (
352 (delta != 0)
353 && (startDOW == endDOW)
354 && start.contains(WALL_TIME)
355 && end.contains(WALL_TIME)
356 ) {
357 PlainTime t1 = start.get(WALL_TIME);
358 PlainTime t2 = end.get(WALL_TIME);
359
360 if ((delta > 0) && t1.isAfter(t2)) {
361 delta--;
362 } else if ((delta < 0) && t1.isBefore(t2)) {
363 delta++;
364 }
365 }
366 }
367 }
368
369 return delta;
370
371 }
372
373 }
374

Callers

nothing calls this directly

Calls 7

getDayOfWeekMethod · 0.95
isAfterMethod · 0.95
isBeforeMethod · 0.95
getMethod · 0.65
getValueMethod · 0.65
containsMethod · 0.65
getWeekOfYearMethod · 0.45

Tested by

no test coverage detected